python仿射密码

前言

密码学实验

算法

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

你可能感兴趣的:(密码学)