Cryptanalysis

解密後檢查句子是否為英文

  • November 30, 2018

我編寫了一個程序,它將遍歷一個單詞的字謎,並通過解密文件上的柱狀轉置密碼來執行每個字謎。但是,對於某個單詞,字謎的數量是 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

引用自:https://crypto.stackexchange.com/questions/64445