Cryptanalysis
解密後檢查句子是否為英文
我編寫了一個程序,它將遍歷一個單詞的字謎,並通過解密文件上的柱狀轉置密碼來執行每個字謎。但是,對於某個單詞,字謎的數量是 7!(5040)意味著我無法單獨檢查每個輸出。
我嘗試了 Google 的 python langdetect 模組,並查看了 ngrams,但似乎密碼的性質導致任何變化都出現英語。
還有其他方法可以檢查輸出文件以檢查其“英語等級”嗎?IC 和 ngram 的組合呢?
提前致謝!
嘗試使用英語詞典對純文字進行標記。給更大的單詞更高的分數,以防止您的分析器偏愛一堆一到兩個字母的單詞。把分數加起來,取最高的。
我不是想插入,但在這個 repo 中有一個(寫得不好)的例子: https ://github.com/wildcardcorp/samson
這是分析器本身的程式碼: https ://github.com/wildcardcorp/samson/blob/master/samson/analyzers/english_analyzer.py
使用範例:
>>> from samson.analyzers.english_analyzer import EnglishAnalyzer >>> message = bytearray(b'stopcollaborateandlisten') >>> analyzer = EnglishAnalyzer() >>> analyzer.analyze(message) 105605.2045585186 >>> import random >>> random.shuffle(message) >>> message bytearray(b'nisoabtpenaltdlecoslrato') >>> analyzer.analyze(message) 22361.397837608132