python密码加密的几种方式,python 密码学
这篇文章主要介绍了大蟒密码学简单替代密码解密及测试教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
目录
简单替代密码示例输出简单替换密码测试输出简单替换密码解密代码
简单替代密码
简单替换密码是最常用的密码,包括为每个密文文本字符替换每个纯文本字符的算法。在这个过程中,与凯撒密码算法相比,字母表是混乱的。
示例
简单替换密码的密钥通常由26个字母组成。一个示例键是:
普通字母表: abcdefghijklmnopqrstuvwxyz
密码字母: phqgiumeaylnofdxjkrcvstszwb
使用上述密钥的示例加密是:
纯文本: defendtheastwallofthecastle
密文: giuifgceiprctpnduceiqprcni
以下代码显示了一个实现简单替换密码的程序;
importrandom,sys
LETTERS= ABCDEFGHIJKLMNOPQRSTUVWXYZ
defmain():
消息=
iflen(系统argv)1:
withopen(sys.argv[1], r)asf:
message=f.read()
else:
message=raw _ input(输入您的消息: )
mode=raw_input(EforEncrypt,DforDecrypt: )
key=
whilecheckKey(键)为错误:
key=raw _ input(输入26个字母键(leaveblankforrandomkey): )
ifkey==:
key=getRandomKey()
ifcheckKey(键)是错误:
print( theresanerrinthekeyorsymbolset .)
translated=translateMessage(消息,关键字,模式)
print(Usingkey:%s%(key))
iflen(系统argv)1:
fileOut=enc sys.argv[1]
withopen(fileOut, w)asf:
f .写(翻译)
打印(成功!Filewrittento:%s%(fileOut))
else:print(Result: 已翻译)
#Storethekeyintolist,sortit,convertback,comparetoalphabet .
defcheckKey(键):
keyString=" " .联接(已排序(列表(键)))
returnkeyString==LETTERS
deftranslateMessage(消息,密钥,模式):
translated=
charsA=字母
charsB=key
#Ifdecryptmodeisdetected,swapAandB
ifmode==D:
查尔萨,查尔萨
对于符号消息:
ifsymbol.upper()incharsA:
symIndex=charsa。查找(符号。upper())
if symbol.isupper():
translated += charsB[symIndex].upper()
else:
translated += charsB[symIndex].lower()
else:
translated += symbol
return translated
def getRandomKey():
randomList = list(LETTERS)
random.shuffle(randomList)
return .join(randomList)
if __name__ == __main__:
main()
输出
您可以观察以下内容当你实现上面给出的代码时输出 :
简单替换密码测试
我们将重点介绍如何使用各种方法测试替换密码,这有助于生成随机字符串,如下面所示 :
import random, string, substitutiondef main():
for i in range(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)
if decrypted != message:
print(ERROR: Decrypted: "%s" Key: %s % (decrypted, key))
sys.exit()
print(Substutition test passed!)
def random_string(size = 5000, chars = string.ascii_letters + string.digits):
return .join(random.choice(chars) for _ in range(size))
if __name__ == __main__:
main()
输出
您可以随机观察输出生成的字符串有助于生成随机纯文本消息,如下所示 :
测试成功完成后,我们可以观察输出消息替换测试通过!.
因此,您可以系统地破解替换密码.
简单替换密码解密
您可以了解替换密码的简单实现,它根据简单替换密码技术中使用的逻辑显示加密和解密的消息.这可以被视为一种替代编码方法.
代码
您可以使用以下代码使用简单替换密码来执行解密;
import randomchars = ABCDEFGHIJKLMNOPQRSTUVWXYZ + \
abcdefghijklmnopqrstuvwxyz + \
0123456789 + \
:.;,?!@#$%&()+=-*/_<> []{}`~^"\\\
def generate_key():
"""Generate an key for our cipher"""
shuffled = sorted(chars, key=lambda k: random.random())
return dict(zip(chars, shuffled))
def encrypt(key, plaintext):
"""Encrypt the string and return the ciphertext"""
return .join(key[l] for l in plaintext)
def decrypt(key, ciphertext):
"""Decrypt the string and return the plaintext"""
flipped = {v: k for k, v in key.items()}
return .join(flipped[l] for l in ciphertext)
def show_result(plaintext):
"""Generate a resulting cipher with elements shown"""
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(Hello World. This is demo of substitution cipher)
以上就是python密码学简单替代密码解密及测试教程的详细内容,更多关于python替代密码解密测试的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。