py写的玩

import sys,random,cryptomath

SYMBOLS=""" !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"""

def main():
    myMessage=""""A computer would deserve to be called intelligent if it could 
    deceive a human into believing that it was human." -Alan Turing"""
    
    myKey=2023
    myMode='encrypt'
    
    if myMode=='encrypt':
        translated=encryptMessage(myKey,myMessage)
    elif myMode=='decrypt':
        translated=decryptMessage(myKey,myMessage)
        
    print('Key:%s'%(myKey))
    print('%sed text:'%(myMode.title()))
    print(translated)
    
    print'完全%sed文本复制到剪贴板。'%(myMode))
    
def getKeyParts(key):    keyA = key // len(SYMBOLS)    keyB = key%len(SYMBOLS)    return(keyA,keyB)def checkKeys(keyA) ,keyB,mode):如果keyA == 1且mode == 'encrypt':sys.exit('当密钥A设置为1时,仿射密码变得非常弱。选择一个不同的密钥。')如果keyB == 0并且模式== '加密':sys.exit('仿射密码变为'键B设置为0时非常弱。选择一个不同的键。')如果keyA <0或keyB <0或keyB> len(SYMBOLS) -  1:sys.exit('键A必须大于0且键B必须介于0和%s之间。'%(len(SYMBOLS) -  1))if cryptomath.gcd(keyA, len(SYMBOLS))!= 1:        sys.exit('键A(%s)和符号集大小(%s)不是相对素数。选择不同的键。'%(keyA,LEN(符号)))



    










        
def encryptMessage(key,message):
    keyA,keyB=getKeyParts(key)
    checkKeys(keyA,keyB,'encrypt')
    ciphertext=''
    for symbol in message:
        如果符号在SYMBOLS中:            symIndex = SYMBOLS.find(symbol)            密文+ = SYMBOLS [(symIndex * keyA + keyB)%len(SYMBOLS)]         else:            密文+ =符号    返回密文def decryptMessage(key,message):    keyA,keyB = getKeyParts (key)    checkKeys(keyA,keyB,'decrypt')    plaintext =''     modInverseOfkeyA = cryptomath.findModInverse(keyA,len(SYMBOLS))    用于消息        中的符号:如果符号在SYMBOLS中:            symIndex = SYMBOLS.find(symbol)            plaintext + =符号[(symIndex-keyB)* modInverseOfkeyA%len(SYMBOLS)]         else:            明文+ =符号    返回明文





  
  





    







  
  
def getRandomKey():    while:        keyA = random.randint(2len(SYMBOLS))        keyB = random.randint(2len(SYMBOLS))        如果gcd(keyA,len(SYMBOLS))== 1return keyA * len(SYMBOLS)+ keyB如果__ name __ ==' __ main __ ':main()` ` `





            




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值