溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python密碼學Vignere密碼怎么使用

發布時間:2022-05-24 17:20:06 來源:億速云 閱讀:189 作者:iii 欄目:開發技術

Python密碼學:Vignere密碼怎么使用

Vigenère密碼是一種經典的加密方法,它通過使用一個關鍵詞對明文進行加密,從而增強加密的復雜性。與簡單的凱撒密碼相比,Vigenère密碼通過多表替換的方式,使得破解難度大大增加。本文將介紹如何在Python中使用Vigenère密碼進行加密和解密。

1. Vigenère密碼簡介

Vigenère密碼是由法國 cryptographer Blaise de Vigenère 在16世紀發明的一種多表替換密碼。它通過使用一個關鍵詞對明文進行加密,每個字母的位移量由關鍵詞中對應字母的位置決定。例如,關鍵詞為“KEY”,則明文的第一個字母使用K的位移量,第二個字母使用E的位移量,第三個字母使用Y的位移量,依此類推。

2. Vigenère密碼的加密過程

Vigenère密碼的加密過程可以描述為:

[ C_i = (M_i + K_i) \mod 26 ]

其中: - ( C_i ) 是密文的第i個字母 - ( M_i ) 是明文的第i個字母 - ( K_i ) 是關鍵詞的第i個字母 - 字母A到Z分別對應0到25

3. Vigenère密碼的解密過程

Vigenère密碼的解密過程與加密過程相反:

[ M_i = (C_i - K_i) \mod 26 ]

其中: - ( M_i ) 是明文的第i個字母 - ( C_i ) 是密文的第i個字母 - ( K_i ) 是關鍵詞的第i個字母

4. Python實現Vigenère密碼

下面是一個簡單的Python實現Vigenère密碼的加密和解密過程的示例代碼:

def vigenere_encrypt(plaintext, key):
    encrypted_text = ""
    key_length = len(key)
    for i, char in enumerate(plaintext):
        if char.isalpha():
            shift = ord(key[i % key_length].upper()) - ord('A')
            if char.isupper():
                encrypted_text += chr((ord(char) - ord('A') + shift) % 26 + ord('A'))
            else:
                encrypted_text += chr((ord(char) - ord('a') + shift) % 26 + ord('a'))
        else:
            encrypted_text += char
    return encrypted_text

def vigenere_decrypt(ciphertext, key):
    decrypted_text = ""
    key_length = len(key)
    for i, char in enumerate(ciphertext):
        if char.isalpha():
            shift = ord(key[i % key_length].upper()) - ord('A')
            if char.isupper():
                decrypted_text += chr((ord(char) - ord('A') - shift) % 26 + ord('A'))
            else:
                decrypted_text += chr((ord(char) - ord('a') - shift) % 26 + ord('a'))
        else:
            decrypted_text += char
    return decrypted_text

# 示例使用
plaintext = "HELLOWORLD"
key = "KEY"
encrypted_text = vigenere_encrypt(plaintext, key)
print(f"加密后的文本: {encrypted_text}")

decrypted_text = vigenere_decrypt(encrypted_text, key)
print(f"解密后的文本: {decrypted_text}")

代碼解釋:

  • vigenere_encrypt 函數用于加密明文,vigenere_decrypt 函數用于解密密文。
  • 加密和解密過程中,關鍵詞會循環使用,以確保每個明文字母都有一個對應的關鍵詞字母。
  • 代碼中使用了 ord 函數將字母轉換為ASCII碼,chr 函數將ASCII碼轉換回字母。

5. 運行結果

假設明文為 "HELLOWORLD",關鍵詞為 "KEY",則運行上述代碼后,輸出如下:

加密后的文本: RIJVSGSPVH
解密后的文本: HELLOWORLD

6. 總結

Vigenère密碼是一種簡單但有效的加密方法,適用于初學者學習密碼學的基本概念。通過Python實現Vigenère密碼的加密和解密過程,可以幫助我們更好地理解其工作原理。雖然Vigenère密碼在現代密碼學中已經不再安全,但它仍然是學習密碼學的一個重要起點。

希望本文對你理解和使用Vigenère密碼有所幫助!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女