python换位密码如何实现,使用了什么方法
Admin 2022-08-25 群英技术资讯 1263 次浏览
在这篇文章中,我们来学习一下“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'))
程序代码对于柱状转置技术的基本实现,给出以下输出 :

注意 : 密码分析者观察到当进行转座技术时加密安全性的显着改善.他们还指出,使用相同的转置密码重新加密密文可以提高安全性.
以上,我们了解了Transposition Cipher.下面,我们将讨论它的加密.
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 是主模块提供以下输出 :

请注意以下代码以便更好地理解解密转置密码.密码为 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)
解密转置密码的程序代码给出以下输出;

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法
这篇文章主要介绍了Python可视化神器pyecharts之绘制地理图表,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
这篇博文的目的是从图片中提取一定的矩形区域作为新的图片 简单来说:我的全家福丢了,所以我想从以前的房间照片里,提取出其中的全家福并重新打印一张(忽视画质问题)现在我就是这么个目的,需要的朋友可以参考下
在写代码的时候,往往会漏掉日志这个关键因素,导致功能在使用的时候出错却无法溯源。这个时候只要利用日志装饰器就能解决,本文将用Python自制一个简单实用的日志装饰器,需要的可以参考一下
Python内置函数-print() 函数。print() 方法用于打印输出,最常见的一个函数。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008