提问人:alexandra zamfir 提问时间:11/15/2023 最后编辑:alexandra zamfir 更新时间:11/16/2023 访问量:58
Monoalphabetic Substitution -Cryptography [已关闭]
Monoalphabetic Substitution -Cryptography [closed]
问:
我需要帮助完成这个练习:
以下文本已通过字母替换进行编码 密码。这意味着,密文字母表包含相同的 字母作为明文字母表,但字母的顺序有 被打乱了。这是一个单字母替换密码。
LYMBXJXKBBKBJPJJBBKBJPZPHYXNJKGOLOGPIEYHKBIXJSOEPVJBPMBXJEPONKBIEJGJOEATPYOXUOBAJPTJLKJDXGYLOEPKLKAKODKBPJDDKIJBAJXOPOGAKJBAJAYVSMPJEGAKJBAJOSSDKJXVOPTJVOPKAGOBXEYFYPKAGLMEPTJEVYEJXNJVOKBPOKBGODOEIJBJPHYENYLKBXMGPEZSOEPBJEGPTEYMITPTJOHOEXHKBBKBINJHYENSEYIEOVVJOBXPTEYMITYMEEJGJOEATAYDDOFYEOPKYBGPTJXJSOEPVJBPSEYUKXJGJXMAOPKYBPTEYMITYBJFOATJDYEGSEYIEOVVJOBXPHYVOGPJEGSEYIEOVVJGEJGJOEATOPPTJXJSOEPVJBPYLXOPOGAKJBAJOBXNBYHDJXIJJBIKBJJEKBIGSOBGPTJXKGAKSDKBJGOBXKBPJELOAJGYLOEPKLKAKODKBPJDDKIJBAJXOPOGAKJBAJAYVSMPJEGAKJBAJOBXOSSDKJXVOPTJVOPKAGHJXJUJDYSBJHPYYDGOBXVJPTYXYDYIKJGPYOXUOBAJPTJGJLKJDXGOPPTJGOVJPKVJHJAYDDOFYEOPJHKPTOHKXJEOBIJYLKBGPKPMPJGFYPTHKPTKBOBXYMPGKXJYLVOOGPEKATPMBKUJEGKPZOBXHYENYBXKUJEGJOSSDKAOPKYBGKBADMXKBIKBPTJLKJDXGYLTJODPTOBXVJXKAKBJDYIKGPKAGFKYDYIZOEPSTZGKAGAZFJEGJAMEKPZBJMEYGAKJBAJOBXJXMAOPKYB
文本是用英文写的。分析每个字母的频率 并尝试重建密文字母表以及 明文
我尝试了不同的频率分析方法,但我的字母表是错误的,因此文本是错误的。 在我完成频率的分析比较后,我期待看到这个字母表的替换:CNJLRBSWGEIFUKATZQPHVMXDOY for ABCDEFGHIJKLMNOPQSTUVWXYZ
我尝试过在 python 中使用不同的编码,但无论我做什么,一切似乎都是错误的
这是我尝试过的 python 代码:
from collections import Counter
文本=”LYMBXJXKBBKBJPJJBBKBJPZPHYXNJKGOLOGPIEYHKBIXJSOEPVJBPMBXJEPONKBIEJGJOEATPYOXUOBAJPTJLKJDXGYLOEPKLKAKODKBPJDDKIJBAJXOPOGAKJBAJAYVSMPJEGAKJBAJOSSDKJXVOPTJVOPKAGOBXEYFYPKAGLMEPTJEVYEJXNJVOKBPOKBGODOEIJBJPHYENYLKBXMGPEZSOEPBJEGPTEYMITPTJOHOEXHKBBKBINJHYENSEYIEOVVJOBXPTEYMITYMEEJGJOEATAYDDOFYEOPKYBGPTJXJSOEPVJBPSEYUKXJGJXMAOPKYBPTEYMITYBJFOATJDYEGSEYIEOVVJOBXPHYVOGPJEGSEYIEOVVJGEJGJOEATOPPTJXJSOEPVJBPYLXOPOGAKJBAJOBXNBYHDJXIJJBIKBJJEKBIGSOBGPTJXKGAKSDKBJGOBXKBPJELOAJGYLOEPKLKAKODKBPJDDKIJBAJXOPOGAKJBAJAYVSMPJEGAKJBAJOBXOSSDKJXVOPTJVOPKAGHJXJUJDYSBJHPYYDGOBXVJPTYXYDYIKJGPYOXUOBAJPTJGJLKJDXGOPPTJGOVJPKVJHJAYDDOFYEOPJHKPTOHKXJEOBIJYLKBGPKPMPJGFYPTHKPTKBOBXYMPGKXJYLVOOGPEKATPMBKUJEGKPZOBXHYENYBXKUJEGJOSSDKAOPKYBGKBADMXKBIKBPTJLKJDXGYLTJODPTOBXVJXKAKBJDYIKGPKAGFKYDYIZOEPSTZGKAGAZFJEGJAMEKPZBJMEYGAKJBAJOBXJXMAOPKYB”
letter_occurrences = {letter: text.count(letter) for letter in
set(text)}
# Convert to dictionary
letter_occurrences_dict = {letter: count for letter, count in
letter_occurrences.items()}
# Print the dictionary
print(f"{sorted(letter_occurrences_dict.items(), key=lambda x: x[1],
reverse=True)}")
def calculate_probabilities(text):
text = text
letter_occurrences = Counter(text)
total_letters = sum(letter_occurrences.values())
print (total_letters)
probabilities = {letter: count / total_letters for letter, count in letter_occurrences.items()}
return probabilities
文本=”LYMBXJXKBBKBJPJJBBKBJPZPHYXNJKGOLOGPIEYHKBIXJSOEPVJBPMBXJEPONKBIEJGJOEATPYOXUOBAJPTJLKJDXGYLOEPKLKAKODKBPJDDKIJBAJXOPOGAKJBAJAYVSMPJEGAKJBAJOSSDKJXVOPTJVOPKAGOBXEYFYPKAGLMEPTJEVYEJXNJVOKBPOKBGODOEIJBJPHYENYLKBXMGPEZSOEPBJEGPTEYMITPTJOHOEXHKBBKBINJHYENSEYIEOVVJOBXPTEYMITYMEEJGJOEATAYDDOFYEOPKYBGPTJXJSOEPVJBPSEYUKXJGJXMAOPKYBPTEYMITYBJFOATJDYEGSEYIEOVVJOBXPHYVOGPJEGSEYIEOVVJGEJGJOEATOPPTJXJSOEPVJBPYLXOPOGAKJBAJOBXNBYHDJXIJJBIKBJJEKBIGSOBGPTJXKGAKSDKBJGOBXKBPJELOAJGYLOEPKLKAKODKBPJDDKIJBAJXOPOGAKJBAJAYVSMPJEGAKJBAJOBXOSSDKJXVOPTJVOPKAGHJXJUJDYSBJHPYYDGOBXVJPTYXYDYIKJGPYOXUOBAJPTJGJLKJDXGOPPTJGOVJPKVJHJAYDDOFYEOPJHKPTOHKXJEOBIJYLKBGPKPMPJGFYPTHKPTKBOBXYMPGKXJYLVOOGPEKATPMBKUJEGKPZOBXHYENYBXKUJEGJOSSDKAOPKYBGKBADMXKBIKBPTJLKJDXGYLTJODPTOBXVJXKAKBJDYIKGPKAGFKYDYIZOEPSTZGKAGAZFJEGJAMEKPZBJMEYGAKJBAJOBXJXMAOPKYB”
letter_probabilities = calculate_probabilities(text)
for letter, probability in letter_probabilities.items():
print(f" '{letter}':{probability:.4f}")
def calculate_ngram(text, n):
ngrams = [text[i:i+n] for i in range(len(text)-n+1)]
ngram_occurrences = Counter(ngrams)
return ngram_occurrences
文本 =“LYMBXJXKBBKBJPJJBBKBJPZPHYXNJKGOLOGPIEYHKBIXJSOEPVJBPMBXJEPONKBIEJGJOEATPYOXUOBAJPTJLKJDXGYLOEPKLKAKODKBPJDDKIJBAJXOPOGAKJBAJAYVSMPJEGAKJBAJOSSDKJXVOPTJVOPKAGOBXEYFYPKAGLMEPTJEVYEJXNJVOKBPOKBGODOEIJBJPHYENYLKBXMGPEZSOEPBJEGPTEYMITPTJOHOEXHKBBKBINJHYEN seyieovvjobxpteymitymeejgjoeatayddofyeopkybgptjxjsoepvjbpseyukxjgjxmaopkybpteymitybfoatjdyegseyieovvjobxphyvogpjegseyieovvjgejgjoeatopptjxjsoepvjbpylxopogakjbajobxnbyhdjxijjbikbjjekbigsobgptjxkgaksdkbjgobxkbpjeloajgyloepklkakodkbpjddkijbajxopogaKJBAJAYVSMPJEGAKJBAJOBXOSSDKJXVOPTJVOPKAGHJXJUJDYSBJHPYYDGOBXVJPTYXYDYIKJGPYOXUOBAJPTJGJLKJDXGOPPTJGOVJPKVJHJAYDDOFYEOPJHKPTOHKXJEOBIJYLKBGPKPMPJGFYPTHKPTKBOBXYMPGKXJYLVOOGPEKATPMBKUJEGKPZOBXHYENYBXKUJEGJOSSDKAOPKYBGKBADMXKBIKBPTJLKJDXGYLTJODPTOBXVJXKAKBJDYIKGPKAGFKYDYIZOEPSTZGKAGAZFJEGJAMEKPZBJMEYGAKJBAJOBXJXMAOPKYB”
bigram_probabilities = calculate_ngram(text, 2)
trigram_probabilities = calculate_ngram(text, 3)
# Print the results
for bigram, probability in sorted(bigram_probabilities.items(),
key=lambda x: x[1], reverse=True):
print(f"{bigram} :{probability:.4f}")
trigram_probabilities = calculate_ngram(text, 3)
# Sort trigram probabilities in descending order
sorted_trigram_probabilities = sorted(trigram_probabilities.items(),
key=lambda x: x[1], reverse=True)
# Print sorted trigram probabilities
for trigram, probability in sorted_trigram_probabilities:
print(f"Trigram: '{trigram}', Probability: {probability}")
答: 暂无答案
评论