前言
密碼學實驗
算法
加密:E(x)=ax+b(mod 26) # x表示明文
解密:D(x)=(a)’(E(x)-b)(mod 26)
D(x)=a’E(x)-a’b(mod 26) # (a)'表示a的逆元
代碼
import random
import os
a=int(input("輸入a:"))
b=int(input("輸入b:"))
dic = {1: 1, 3: 9, 5: 21, 7: 15, 9: 3, 11: 19, 15: 7, 17: 23, 19: 11, 21: 5, 23: 17, 25: 25}
//dic[] a的逆元,a與26互素
def Encrypt():
m=input("請輸入明文:")
k=m.lower()
l=list(k)
s=l
for i in range(len(l)):
s[i]=chr(((ord(l[i])-97)*a+b)%26+97)
print("結果爲:"+"".join(s))
def Decrypt():
c=input("請輸入密文:")
k=c.lower()
l=list(k)
s=l
for i in range(len(l)):
s[i]=chr((dic[a]*(ord(l[i])-97)-(dic[a]*b)%26)%26+97)
#s[i]=chr((dic[a]*((ord(l[i]))-dic[a]*b)%26)%26+97)
print("結果爲:"+"".join(s))
while true:
Encrypt()
Decrypt()