
前言
密码学实验
算法
加密: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的逆元
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
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 (): 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) print("结果为:"+"".join(s))
while true: Encrypt() Decrypt()
|
近期评论