python换位密码及换位解密转置加密怎么实现

发布时间:2022-05-24 09:17:53 作者:iii
来源:亿速云 阅读:369

这篇文章主要介绍了python换位密码及换位解密转置加密怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python换位密码及换位解密转置加密怎么实现文章都会有所收获,下面我们一起来看看吧。

换位密码

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

示例

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

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

python换位密码及换位解密转置加密怎么实现

纯文本字符水平放置,密文以垂直格式创建为: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'))

解释

输出

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

python换位密码及换位解密转置加密怎么实现

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

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

Pyperclip

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

pip install pyperclip

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

python换位密码及换位解密转置加密怎么实现

代码

用于加密转置密码的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 是主模块提供以下输出 :

python换位密码及换位解密转置加密怎么实现

解释

解密转置密码的步骤

代码

请注意以下代码以便更好地理解解密转置密码.密码为 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换位密码及换位解密转置加密怎么实现”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. 怎么在小程序中实现上下移动切换位置
  2. vue实现div拖拽互换位置

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:IntelliJ IDEA中怎么调试Java Stream操作

下一篇:微信小程序如何实现卡片层叠滑动

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》