返回顶部
首页 > 资讯 > 后端开发 > Python >python密码学简单替代密码解密及测试教程
  • 339
分享到

python密码学简单替代密码解密及测试教程

2024-04-02 19:04:59 339人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录简单替代密码示例输出简单替换密码测试输出简单替换密码解密代码简单替代密码 简单替换密码是最常用的密码,包括为每个密文文本字符替换每个纯文本字符的算法.在这个过程中,与凯撒密码算法

简单替代密码

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

示例

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

plain alphabet : abcdefghijklmnopqrstuvwxyz
cipher alphabet: phqgiumeaylnofdxjkrcvstzwb

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

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

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

import random, sys
LETTERS = '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 == LETTERS
def 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 translated
def getRandomKey():
   randomList = list(LETTERS)
   random.shuffle(randomList)
   return ''.join(randomList)
if __name__ == '__main__':
   main()

输出

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

简单替换密码测试

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

import random, string, substitution
def 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 random
chars = '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替代密码解密测试的资料请关注编程网其它相关文章!

--结束END--

本文标题: python密码学简单替代密码解密及测试教程

本文链接: https://lsjlt.com/news/118315.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python密码学简单替代密码解密及测试教程
    目录简单替代密码示例输出简单替换密码测试输出简单替换密码解密代码简单替代密码 简单替换密码是最常用的密码,包括为每个密文文本字符替换每个纯文本字符的算法.在这个过程中,与凯撒密码算法...
    99+
    2024-04-02
  • python密码学RSA密码解密教程
    目录授权身份验证RSA密码解密本章是前一章的延续,我们使用RSA算法逐步实现加密,并详细讨论它. 用于解密密文的函数是as跟随 : def decrypt(ciphertext, p...
    99+
    2024-04-02
  • Python密码学仿射密码及攻击单字母密码教程
    目录仿射密码代码输出单字母密码输出仿射密码 Affine Cipher是Multiplicative Cipher和Caesar Cipher算法的组合. 仿射密码的基本实现如下图所...
    99+
    2024-04-02
  • python密码学RSA密码加密教程
    目录加密算法模块 哈希值初始化函数algorithm加密程序的完整代码在本章中,我们将重点介绍RSA密码加密的不同实现及其所涉及的功能.您可以引用或包含此python文件以...
    99+
    2024-04-02
  • python密码学Vignere密码教程
    目录Vignere密码数学方程Vignere Tableau实现代码输出Vignere密码 Vignere Cipher包含用于加密和解密的Caesar Cipher算法. Vign...
    99+
    2024-04-02
  • python密码学换位密码及换位解密转置加密教程
    目录换位密码示例代码解释输出Pyperclip代码输出解释解密转置密码的步骤代码说明输出换位密码 Transposition Cipher是一种加密算法,其中明文中的字母顺序被重新排...
    99+
    2024-04-02
  • Python编程密码学文件加密与解密代码解析
    目录本章要点1 纯文本文件2 使用置换密码加密文件的源代码transpositionFileCipher.py3 运行置换密码加密文件程序的样例4 文件操作4.1 打开文件4.2 数...
    99+
    2024-04-02
  • Python密码学XOR算法编码流程及乘法密码教程
    目录XOR算法代码输出说明乘法密码Python中乘法密码的基本调制函数如下:在本章中,让我们了解XOR过程及其在Python中的编码以及乘法密码的教程 XOR算法 XOR算法的加密和...
    99+
    2024-04-02
  • Python进行密码学反向密码教程
    目录反向密码算法缺点示例输出解释上一章概述了在本地计算机上安装Python的过程.在本章中,您将详细了解反向密码及其编码. 反向密码算法 反向密码算法具有以下特性 : 反向密码使用反...
    99+
    2024-04-02
  • python密码学文件解密实现教程
    目录代码输出在本章中,我们将讨论使用Python解密加密文件.请注意,对于解密过程,我们将遵循相同的过程,但不是指定输出路径,而是关注输入路径或加密的必要文件. 代码 以下是使用Py...
    99+
    2024-04-02
  • python密码学Base64编码和解码教程
    目录Base64编码编码程序输出解码程序输出差异在ASCII和base64之间缺点Base64编码 Base64编码将二进制数据转换为文本格式,通过通信通道传递,用户可以安全地处理文...
    99+
    2024-04-02
  • Python密码学Caesar Cipher凯撒密码算法教程
    目录凯撒密码算法输出说明凯撒密码算法的黑客攻击在最后一章中,我们处理了反向密码.本章详细讨论了凯撒密码. 凯撒密码算法 凯撒密码的算法具有以下特征; Caesar Cipher Te...
    99+
    2024-04-02
  • python密码学对称和非对称密码教程
    目录对称密码术缺点数据加密标准(DES)安装输出非对称加密缺点输出在本章中,我们将详细讨论对称和非对称密码术. 对称密码术 在此类型中,加密和解密进程使用相同的密钥.它也被称为秘密密...
    99+
    2024-04-02
  • python密码学实现文件加密教程
    目录代码输出说明在Python中,可以在传输到通信通道之前加密和解密文件.为此,您必须使用插件 PyCrypto .您可以使用下面给出的命令安装此插件. pip ...
    99+
    2024-04-02
  • python密码学各种加密模块教程
    目录加密模块代码输出说明在本章中,您将详细了解Python中各种加密模块. 加密模块 它包含所有配方和基元,并在Python中提供高级编码接口.您可以使用以下命令安装加密模块 : ...
    99+
    2024-04-02
  • Python密码学ROT13算法教程
    目录ROT13算法的解释示例程序代码缺点ROT13算法的分析到目前为止,您已经了解了反向密码和Caesar密码算法.现在,让我们讨论一下ROT13算法及其实现. ROT13算法的解释...
    99+
    2024-04-02
  • Python密码学概述双倍强度加密教程
    目录使用python进行密码学加密术语纯文本密文加密解密现代密码学的特征双倍强度加密级别第一层加密第二层加密第三层加密混合密码术Python语言的特性解释面向对象Python语言的关...
    99+
    2024-04-02
  • 解码 Java JUnit:破解单元测试的秘密
    简介 JUnit 是一个 Java 编程语言中广泛使用的单元测试框架。它允许开发人员编写和执行测试案例,以验证代码的正确性。通过单元测试,您可以检查代码的各个部分,确保它们按预期运行。 基本概念 JUnit 测试案例遵循以下基本结构: ...
    99+
    2024-02-16
    JUnit 单元测试 Java 测试驱动开发 自动化测试
  • Python编程密码学文件加密与解密的方法
    本文小编为大家详细介绍“Python编程密码学文件加密与解密的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python编程密码学文件加密与解密的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。本章要点o...
    99+
    2023-06-30
  • python密码学RSA算法及秘钥创建教程
    目录RSA算法步骤1:生成RSA模数步骤2:派生数(e)步骤3:公钥步骤4:私钥加密公式解密公式生成RSA密钥生成RSA密钥的算法Cryptomath模块RabinMiller模块生...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作