开发手册 欢迎您!
软件开发者资料库

简单替代密码

使用Python简单替换密码进行密码学 - 使用Python从简单而简单的步骤学习密码学,从基本到高级概念,包括概述,双强度加密,Python概述和安装,反向密码,凯撒密码,ROT13算法,转置密码,加密转置密码,转置密码解密,文件加密,文件解密,Base64编码和解码,XOR处理,乘法密码,仿射密码,黑客单字母密码,简单替换密码,简单替换密码测试,简单替换密码解密,密码学的Python模块,了解Vignere密码,实现Vignere密码,一次填充密码,一次填充密码的实现,对称和非对称密码,理解RSA算法,创建RSA密钥,RSA密码加密,RSA密码解密,黑客RSA密码。

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

示例

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

plain alphabet : abcdefghijklmnopqrstuvwxyzcipher alphabet: phqgiumeaylnofdxjkrcvstzwb

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

plaintext : defend the east wall of the castleciphertext: giuifg cei iprc tpnn du cei qprcni

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

import random, sysLETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'def main():   message = ''   if len(sys.argv) > 1:      with open(sys.argv[1], 'r') as f:         message = f.read()   else:      message = raw_input("Enter your message: ")   mode = raw_input("E for Encrypt, D for Decrypt: ")   key = ''      while checkKey(key) is False:      key = raw_input("Enter 26 ALPHA key (leave blank for random key): ")      if key == '':         key = getRandomKey()      if checkKey(key) is False:print('There is an error in the key or symbol set.')   translated = translateMessage(message, key, mode)   print('Using key: %s' % (key))      if len(sys.argv) > 1:      fileOut = 'enc.' + sys.argv[1]      with open(fileOut, 'w') as f:         f.write(translated)      print('Success! File written to: %s' % (fileOut))   else: print('Result: ' + translated)# Store the key into list, sort it, convert back, compare to alphabet.def checkKey(key):   keyString = ''.join(sorted(list(key)))   return keyString == LETTERSdef translateMessage(message, key, mode):   translated = ''   charsA = LETTERS   charsB = key      # If decrypt mode is detected, swap A and B   if mode == 'D':      charsA, charsB = charsB, charsA   for symbol in message:      if symbol.upper() in charsA:         symIndex = charsA.find(symbol.upper())         if symbol.isupper():            translated += charsB[symIndex].upper()         else:            translated += charsB[symIndex].lower()else:               translated += symbol         return translateddef getRandomKey():   randomList = list(LETTERS)   random.shuffle(randomList)   return ''.join(randomList)if __name__ == '__main__':   main()

输出

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

简单替换