愷撒密碼(英語:caesar cipher)是一種最簡單且最廣為人知的加密技術。它是一種替換加密的技術,明文中的所有字母都在字母表上向後(或向前)按照乙個固定數目進行偏移後被替換成密文。
**愷撒密碼的加密、解密方法還能夠通過同餘的數學方法進行計算。首先將字母用數字代替,a=0,b=1,…,z=25。此時偏移量為n的加密方法即為:
解密方法:
愷撒密碼的替換方法是通過排列明文和密文字母表,密文字母表示通過將明文本母表向左或向右移動乙個固定數目的位置。例如,當偏移量是左移5的時候(解密時的金鑰就是5):
明文本母表:abcdefghijklmnopqrstuvwxyz ;
密文字母表:fghijklmnopqrstuvwxyzabcde。
密文建立過程,需要將明文本母表中每個字母進行加密形成密文字母表,即取出每個字母的元素和下標k1,將k1-金鑰,如果大於零,k2為下標-金鑰,反之則為26+(k1-金鑰),並對應於空密文字母表中的k2位置,並將取出的元素加到空密文字母表的k2位置上,建立密文字母表。
使用時,將明文本母表進行對應,即可得到密文
#建立加密字典、解密字典
deffunction
(key)
:#建立明文本母表
invented_chars =
"abcdefghijklmnopqrstuvwxyz"
secret_emplty =[0
,0,0
,0,0
,0,0
,0,0
,0,0
,0,0
,0,0
,0,0
,0,0
,0,0
,0,0
,0,0
,0]#建立空的密文字母表
invented_tuple =
tuple
(list
(invented_chars)
)#將字串形成元組
#建立加密之後的密文字母表
for i, j in
enumerate
(invented_tuple)
:if i - key <0:
a =(i - key)+26
secret_emplty[a]
= j else
: a = i - key
secret_emplty[a]
= j print
(secret_emplty)
#建立完成密文字母表,輸出檢視
encryption_dict =
dict
(zip
(invented_tuple,secret_emplty)
)#建立加密字典
decryption_dict =
dict
(zip
(secret_emplty,invented_tuple)
)#建立解密字典
return encryption_dict, decryption_dict
#生成密文
defencrypt
(information,
**encryption)
: info =
tuple
(list
(information)
)#訊息字母的處理
secret =
#建空密文
#加密for letter in info:
for letter_encrypt,value_encrypt in encryption.items():
if letter == letter_encrypt:
return secret
#解密def
decrypt
(secret,
**decryption)
: information_solve =
#建立空明文
for letter in secret:
for letter_decrypt,value_encrypt in decryption.items():
if letter == letter_decrypt:
return information_solve
if __name__ ==
'__main__'
: key =
eval
(input
("請輸入金鑰:"))
information =
input
("請輸入訊息:"
) encryption,decryption = function(key)
secret = encrypt(information,
**encryption)
#加密print
(secret)
information_solve = decrypt(secret,
**decryption)
#解密print
(information_solve)
python 實現凱撒加密
凱撒密碼 caesar 基本原理 字母表一共有26個英文本母,加密時,我們需要將某個明文本母做n位偏移得到密文,這個n最多為26,而且偏移為26時和偏移為0時一樣,明文和密文對應相等,實際上可以說最大的偏移量為25,這裡的偏移量是這個加密解密演算法的核心,我們可以說他就是秘鑰。公式 加密公式 f a...
Python實現RSA加密演算法
基本思路在這裡說一下 設p q為質數 n p q fn p 1 q 1 要滿足 1 e fn 且 e 與 fn 互質 滿足 e d fn 1 d 1 e 為公鑰 d 為私鑰 把e 和 n 發給 客戶端 m 為明文 c m e n c 為密文 在把 c 發給伺服器 m c d n 最後得到 mrsa演...
DES加密演算法與python實現
全稱 資料加密標準 data encryption standard 屬於對稱加密演算法。des是乙個分組加密演算法,典型的des以64位為分組對資料加密,加密和解密用的是同乙個演算法。它的金鑰長度是56位 因為每個第8 位都用作奇偶校驗 金鑰可以是任意的56位的數,而且可以任意時候改變。pytho...