Contents
  1. 1. 前言
  2. 2. 算法
  3. 3. 代码

前言

密码学实验

算法

加密: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
36
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()

Contents
  1. 1. 前言
  2. 2. 算法
  3. 3. 代码