学堂 学堂 学堂公众号手机端

python换位密码如何实现,使用了什么方法

lewis 6年前 (2019-06-24) 阅读数 10 #技术
在这篇文章中,我们来学习一下“python换位密码如何实现,使用了什么方法”的相关知识,下文有详细的讲解,易于大家学习和理解,有需要的朋友可以借鉴参考,下面就请大家跟着小编的思路一起来学习一下吧。


换位密码

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

示例

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

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

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

代码

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

defsplit_len(seq,length):
return[seq[i:i+length]foriinrange(0,len(seq),length)]
defencode(key,plaintext):
order={
int(val):numfornum,valinenumerate(key)
}
ciphertext=''
forindexinsorted(order.keys()):
forpartinsplit_len(plaintext,len(key)):
try:ciphertext+=part[order[index]]
exceptIndexError:
continue
returnciphertext
print(encode('3214','HELLO'))

解释

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

输出

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

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

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

Pyperclip

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

pip install pyperclip

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

代码

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

importpyperclip
defmain():
myMessage='TranspositionCipher'
myKey=10
ciphertext=encryptMessage(myKey,myMessage)
print("CipherTextis")
print(ciphertext+'|')
pyperclip.copy(ciphertext)
defencryptMessage(key,message):
ciphertext=['']*key
forcolinrange(key):
position=col
whileposition<len(message):
ciphertext[col]+=message[position]
position+=key
return''.join(ciphertext)#Ciphertext
if__name__=='__main__':
main()

输出

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

解释

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

解密转置密码的步骤

代码

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

importmath,pyperclip
defmain():
myMessage='TonersraiCntisippoh'
myKey=6
plaintext=decryptMessage(myKey,myMessage)
print("Theplaintextis")
print('TranspositionCipher')
defdecryptMessage(key,message):
numOfColumns=math.ceil(len(message)/key)
numOfRows=key
numOfShadedBoxes=(numOfColumns*numOfRows)-len(message)
plaintext=float('')*numOfColumns
col=0
row=0
forsymbolinmessage:
plaintext[col]+=symbol
col+=1
if(col==numOfColumns)or(col==numOfColumns-1androw>=numOfRows-numOfShadedBoxes):
col=0row+=1return''.join(plaintext)
if__name__=='__main__':
main()

说明

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

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

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

输出

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


以上就是关于“python换位密码如何实现,使用了什么方法”的相关知识,感谢各位的阅读,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注博信,小编每天都会为大家更新不同的知识。
版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门