意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

基于Python怎样制作简单替换密码的程序

来源:恒创科技 编辑:恒创科技编辑部
2023-12-30 13:47:59
今天这篇我们来学习和了解“基于Python怎样制作简单替换密码的程序”,下文的讲解详细,步骤过程清晰,对大家进一步学习和理解“基于Python怎样制作简单替换密码的程序”有一定的帮助。有这方面学习需要的朋友就继续往下看吧!


基于Python怎样制作简单替换密码的程序

简单替代密码

简单替换密码是最常用的密码,包括为每个密文文本字符替换每个纯文本字符的算法.在这个过程中,与凯撒密码算法相比,字母表是混乱的.

示例

简单替换密码的密钥通常由26个字母组成.一个示例键是 :

plainalphabet:abcdefghijklmnopqrstuvwxyz
cipheralphabet:phqgiumeaylnofdxjkrcvstzwb

使用上述密钥的示例加密是 :

plaintext:defendtheeastwallofthecastle
ciphertext:giuifgceiiprctpnnduceiqprcni

以下代码显示了一个实现简单替换密码的程序;

importrandom,sys
LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
defmain():
message=''
iflen(sys.argv)>1:
withopen(sys.argv[1],'r')asf:
message=f.read()
else:
message=raw_input("Enteryourmessage:")
mode=raw_input("EforEncrypt,DforDecrypt:")
key=''

whilecheckKey(key)isFalse:
key=raw_input("Enter26ALPHAkey(leaveblankforrandomkey):")
ifkey=='':
key=getRandomKey()
ifcheckKey(key)isFalse:
print('Thereisanerrorinthekeyorsymbolset.')
translated=translateMessage(message,key,mode)
print('Usingkey:%s'%(key))

iflen(sys.argv)>1:
fileOut='enc.'+sys.argv[1]
withopen(fileOut,'w')asf:
f.write(translated)
print('Success!Filewrittento:%s'%(fileOut))
else:print('Result:'+translated)
#Storethekeyintolist,sortit,convertback,comparetoalphabet.
defcheckKey(key):
keyString=''.join(sorted(list(key)))
returnkeyString==LETTERS
deftranslateMessage(message,key,mode):
translated=''
charsA=LETTERS
charsB=key

#Ifdecryptmodeisdetected,swapAandB
ifmode=='D':
charsA,charsB=charsB,charsA
forsymbolinmessage:
ifsymbol.upper()incharsA:
symIndex=charsA.find(symbol.upper())
ifsymbol.isupper():
translated+=charsB[symIndex].upper()
else:
translated+=charsB[symIndex].lower()
else:
translated+=symbol
returntranslated
defgetRandomKey():
randomList=list(LETTERS)
random.shuffle(randomList)
return''.join(randomList)
if__name__=='__main__':
main()

输出

您可以观察以下内容当你实现上面给出的代码时输出 :

简单替换密码测试

我们将重点介绍如何使用各种方法测试替换密码,这有助于生成随机字符串,如下面所示 :

importrandom,string,substitution
defmain():
foriinrange(1000):
key=substitution.getRandomKey()
message=random_string()
print('Test%s:String:"%s.."'%(i+1,message[:50]))
print("Key:"+key)
encrypted=substitution.translateMessage(message,key,'E')
decrypted=substitution.translateMessage(encrypted,key,'D')

ifdecrypted!=message:
print('ERROR:Decrypted:"%s"Key:%s'%(decrypted,key))
sys.exit()
print('Substutitiontestpassed!')
defrandom_string(size=5000,chars=string.ascii_letters+string.digits):
return''.join(random.choice(chars)for_inrange(size))
if__name__=='__main__':
main()

输出

您可以随机观察输出生成的字符串有助于生成随机纯文本消息,如下所示 :

测试成功完成后,我们可以观察输出消息替换测试通过!.

因此,您可以系统地破解替换密码.

简单替换密码解密

您可以了解替换密码的简单实现,它根据简单替换密码技术中使用的逻辑显示加密和解密的消息.这可以被视为一种替代编码方法.

代码

您可以使用以下代码使用简单替换密码来执行解密;

importrandom
chars='ABCDEFGHIJKLMNOPQRSTUVWXYZ'+\
'abcdefghijklmnopqrstuvwxyz'+\
'0123456789'+\
':.;,?!@#$%&()+=-*/_<>[]{}`~^"\'\\'
defgenerate_key():
"""Generateankeyforourcipher"""
shuffled=sorted(chars,key=lambdak:random.random())
returndict(zip(chars,shuffled))
defencrypt(key,plaintext):
"""Encryptthestringandreturntheciphertext"""
return''.join(key[l]forlinplaintext)
defdecrypt(key,ciphertext):
"""Decryptthestringandreturntheplaintext"""
flipped={v:kfork,vinkey.items()}
return''.join(flipped[l]forlinciphertext)
defshow_result(plaintext):
"""Generatearesultingcipherwithelementsshown"""
key=generate_key()
encrypted=encrypt(key,plaintext)
decrypted=decrypt(key,encrypted)
print'Key:%s'%key
print'Plaintext:%s'%plaintext
print'Encrypted:%s'%encrypted
print'Decrypted:%s'%decrypted
show_result('HelloWorld.Thisisdemoofsubstitutioncipher')

以上就是关于“基于Python怎样制作简单替换密码的程序”的介绍了,感谢各位的阅读,如果大家想要了解更多相关的内容,欢迎关注恒创科技,小编每天都会为大家更新不同的知识。
上一篇: Python中re正则表达式模块怎样引入和使用 下一篇: 基于Python实现Harbor镜像垃圾清理的代码是什么