繁体   English   中英

如何在Vigenere Cipher中包含标点符号和空格[Python]

[英]How to include punctuation and white space in Vigenere Cipher [Python]

我正在尝试做Vigenere密码解密器。 该消息将使用我编写的当前代码解密。 但是,它没有考虑标点和空格。 如何考虑这两个组成部分? 下面是我的代码:

vigenered_message = 'dfc jhjj ifyh yf hrfgiv xulk? vmph bfzo! qtl eeh gvkszlfl yyvww kpi hpuvzx dl tzcgrywrxll!'

keyword = 'friends'

def vigenere_decrypt(encrypted_vigener, keyword):
    keyword_length = len(keyword)
    keyword_as_int = [ord(i) for i in keyword]
    encrypted_vigener_int = [ord(i) for i in encrypted_vigener]
    plaintext = ''
    for i in range(len(encrypted_vigener_int)):
        value = (encrypted_vigener_int[i] - keyword_as_int[i % keyword_length]) % 26
        plaintext += chr(value + 65)
    return plaintext

print(vigenere_decrypt(vigenered_message, keyword))

此偏移量应为:“您可以对此进行解码吗? 好工作! 您正在成为密码专家

尝试这个

vigenered_message = r'dfc jhjj ifyh yf hrfgiv xulk? vmph bfzo! qtl eeh gvkszlfl yyvww kpi hpuvzx dl tzcgrywrxll!'

keyword = 'friends'

def vigenere_decrypt(encrypted_vigener, keyword):
    keyword_length = len(keyword)
    keyword_as_int = [ord(i) for i in keyword]
    encrypted_vigener_int = [ord(i) for i in encrypted_vigener]
    plaintext = ''
    for i in range(len(encrypted_vigener_int)):
        if vigenered_message[i].isalpha():
            value = (encrypted_vigener_int[i] - keyword_as_int[i % keyword_length]) % 26
            plaintext += chr(value + 65)
        else:
            plaintext += vigenered_message[i]
    return plaintext

print(vigenere_decrypt(vigenered_message, keyword))

OUTPUT:

YOU WERE ABLE TO DECODE THIS? NICE WORK! YOU ARE BECOMING QUITE THE EXPERT AT CRYTOGRAPHY!

只是一个旁注,您应该以原始格式将字符串分配给变量,否则字符串中的\\"'的字符会在程序流程中造成中断。

用这个:

vigenered_message = r'dfc jhjj ifyh yf hrfgiv xulk? vmph bfzo! qtl eeh gvkszlfl yyvww kpi hpuvzx dl tzcgrywrxll!'

不是这个:

vigenered_message = 'dfc jhjj ifyh yf hrfgiv xulk? vmph bfzo! qtl eeh gvkszlfl yyvww kpi hpuvzx dl tzcgrywrxll!'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM