簡體   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