python密码学换位密码及换位解密转置加密教程

 更新时间:2022年05月23日 17:18:54   作者:菜鸟教程  
这篇文章主要为大家介绍了python密码学换位密码及换位解密转置加密教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

换位密码

Transposition Cipher是一种加密算法,其中明文中的字母顺序被重新排列以形成密文.在此过程中,不包括实际的纯文本字母.

示例

转置密码的一个简单示例是柱状转置密码其中纯文本中的每个字符都是水平写入的,具有指定的字母宽度.密码是垂直写入的,它创建了一个完全不同的密文.

考虑纯文本 hello world ,让我们应用简单的柱状转置技术,如图所示在

纯文本字符水平放置,密文以垂直格式创建为:holewdlo lr.现在,接收方必须使用同一个表将密文解密为纯文本.

代码

以下程序代码演示了柱状转置技术的基本实现 :

def split_len(seq, length):
   return [seq[i:i + length] for i in range(0, len(seq), length)]
def encode(key, plaintext):
   order = {
      int(val): num for num, val in enumerate(key)
   }
ciphertext = ''
for index in sorted(order.keys()):
   for part in split_len(plaintext, len(key)):
      try:ciphertext += part[order[index]]
         except IndexError:
            continue
   return ciphertext
print(encode('3214', 'HELLO'))

解释

  • 使用函数 split_len(),我们可以拆分纯文本字符,可以按柱状或行格式放置.
  • 编码方法有助于使用指定列数的密钥创建密文并通过读取每列中的字符来打印密文.

输出

程序代码对于柱状转置技术的基本实现,给出以下输出 :

注意 : 密码分析者观察到当进行转座技术时加密安全性的显着改善.他们还指出,使用相同的转置密码重新加密密文可以提高安全性.

以上,我们了解了Transposition Cipher.下面,我们将讨论它的加密.

Pyperclip

Python编程语言中 pyperclip 插件的主要用法是执行跨平台模块,用于将文本复制和粘贴到剪贴板.您可以使用如下所示的命令安装python pyperclip 模块

pip install pyperclip

如果系统中已存在该要求,您可以看到以下输出 :

代码

用于加密转置密码的python代码,其中pyperclip是主要模块,如下所示 :

import pyperclip
def main():
   myMessage = 'Transposition Cipher'
   myKey = 10
   ciphertext = encryptMessage(myKey, myMessage)
   print("Cipher Text is")
   print(ciphertext + '|')
   pyperclip.copy(ciphertext)
def encryptMessage(key, message):
   ciphertext = [''] * key
   for col in range(key):
      position = col
      while position < len(message):
         ciphertext[col] += message[position]
position += key
      return ''.join(ciphertext) #Cipher text
if __name__ == '__main__':
   main()

输出

用于加密转置密码的程序代码,其中 pyperclip 是主模块提供以下输出 :

解释

  • 函数 main()调用 encryptMessage(),其中包括使用 len 函数拆分字符并以柱状格式迭代它们的过程.
  • 主函数在结尾处初始化以获得适当的输出.

解密转置密码的步骤

代码

请注意以下代码以便更好地理解解密转置密码.密码为 6 的消息转置密码的密文被提取为 Toners raiCntisippoh.

import math, pyperclip
def main():
   myMessage= 'Toners raiCntisippoh'
   myKey = 6
   plaintext = decryptMessage(myKey, myMessage)
   print("The plain text is")
   print('Transposition Cipher')
def decryptMessage(key, message):
   numOfColumns = math.ceil(len(message) / key)
   numOfRows = key
   numOfShadedBoxes = (numOfColumns * numOfRows) - len(message)
   plaintext = float('') * numOfColumns
   col = 0
   row = 0
   for symbol in message:
      plaintext[col] += symbol
      col += 1
      if (col == numOfColumns) or (col == numOfColumns - 1 and row >= numOfRows - numOfShadedBoxes):
         col = 0 row += 1 return ''.join(plaintext)
if __name__ == '__main__':
   main()

说明

密文和提到的密钥是作为输入参数的两个值,用于解码或解密通过以列格式放置字符并以水平方式读取它们的反向技术密文.

您可以以列格式放置字母,然后使用以下部分将它们组合或连接在一起代码 :

for symbol in message:
   plaintext[col] += symbol
   col += 1
   if (col == numOfColumns) or (col == numOfColumns - 1 and row >= numOfRows - numOfShadedBoxes):
   col = 0
   row += 1
return ''.join(plaintext)

输出

解密转置密码的程序代码给出以下输出;

以上就是python密码学换位密码及换位解密转置加密教程的详细内容,更多关于python密码学换位解密转置加密的资料请关注脚本之家其它相关文章!

相关文章

  • Python Flask上下文管理机制实例解析

    Python Flask上下文管理机制实例解析

    这篇文章主要介绍了Python Flask上下文管理机制实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • python字符串的常用操作方法小结

    python字符串的常用操作方法小结

    这篇文章主要为大家详细介绍了python字符串的常用操作方法,如字符串的替换、删除、截取、复制、连接、比较、查找、分割等,需要的朋友可以参考下
    2016-05-05
  • Python3+SQLAlchemy+Sqlite3实现ORM教程

    Python3+SQLAlchemy+Sqlite3实现ORM教程

    这篇文章主要介绍了Python3+SQLAlchemy+Sqlite3实现ORM教程,需要的朋友可以参考下
    2021-02-02
  • Python 2.7中文显示与处理方法

    Python 2.7中文显示与处理方法

    今天小编就为大家分享一篇Python 2.7中文显示与处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 详解Python获取线程返回值的三种方式

    详解Python获取线程返回值的三种方式

    提到线程,你的大脑应该有这样的印象:我们可以控制它何时开始,却无法控制它何时结束,那么如何获取线程的返回值呢?今天就和大家分享一下一些做法
    2022-07-07
  • python存储16bit和32bit图像的实例

    python存储16bit和32bit图像的实例

    今天小编就为大家分享一篇python存储16bit和32bit图像的实例,具有的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 16个python常用魔法函数小结

    16个python常用魔法函数小结

    本文主要介绍了16个python常用魔法函数小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • python学习基础之循环import及import过程

    python学习基础之循环import及import过程

    python中的import语句是用来导入模块的,下面这篇文章主要给大家介绍了关于python学习基础之循环import及import过程的相关资料,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2018-04-04
  • Python实现计算AUC的三种方式总结

    Python实现计算AUC的三种方式总结

    AUC(Area under curve)是机器学习常用的二分类评测手段,直接含义是ROC曲线下的面积。本文总结了Python语言实现计算AUC的三种方式,感兴趣的可以学习一下
    2022-07-07
  • 关于Python中的编码规范

    关于Python中的编码规范

    这篇文章主要介绍了关于Python中的编码规范,一千个程序员有一千套编码规范,统一的编码规范可以提高开发效率,需要的朋友可以参考下
    2023-04-04

最新评论