




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第python密码学换位密码及换位解密转置加密教程目录换位密码示例代码解释输出Pyperclip代码输出解释解密转置密码的步骤代码说明输出
换位密码
TranspositionCipher是一种加密算法,其中明文中的字母顺序被重新排列以形成密文.在此过程中,不包括实际的纯文本字母.
示例
转置密码的一个简单示例是柱状转置密码其中纯文本中的每个字符都是水平写入的,具有指定的字母宽度.密码是垂直写入的,它创建了一个完全不同的密文.
考虑纯文本helloworld,让我们应用简单的柱状转置技术,如图所示在
纯文本字符水平放置,密文以垂直格式创建为:holewdlolr.现在,接收方必须使用同一个表将密文解密为纯文本.
代码
以下程序代码演示了柱状转置技术的基本实现:
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(),我们可以拆分纯文本字符,可以按柱状或行格式放置.编码方法有助于使用指定列数的密钥创建密文并通过读取每列中的字符来打印密文.
输出
程序代码对于柱状转置技术的基本实现,给出以下输出:
注意:密码分析者观察到当进行转座技术时加密安全性的显着改善.他们还指出,使用相同的转置密码重新加密密文可以提高安全性.
以上,我们了解了TranspositionCipher.下面,我们将讨论它的加密.
Pyperclip
Python编程语言中pyperclip插件的主要用法是执行跨平台模块,用于将文本复制和粘贴到剪贴板.您可以使用如下所示的命令安装pythonpyperclip模块
pipinstallpyperclip
如果系统中已存在该要求,您可以看到以下输出:
用于加密转置密码的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的消息转置密码的密文被提取为TonersraiCntisippoh.
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
-
numOfShadedBo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 经营承包合同协议书
- 协议书与合同不符
- 合同借款协议书
- 工伤合同协议书
- 服务协议书和合同有什么区别
- 产权合同协议书
- 房合同协议书范本
- 主播解除合同终止协议书
- 香蕉转让合同协议书
- 用工合同协议解除协议书
- 粤教科技版科学六年级下册第14课《生物生存的环境》教学课件
- 高考语文作文素材:《典籍里的中国》课件33张
- 隧道施工安全教育培训
- 2022年道路交通安全防汛工作应急预案
- (完整)《神经病学》考试题库及答案
- 边坡支护之锚杆施工技术ppt版(共35页)
- 黄芩常见的病虫害症状及防治措施
- 思政课社会实践报告1500字6篇
- GB∕T 25119-2021 轨道交通 机车车辆电子装置
- 电池PCBA规格书
- 机械加工切削全参数推荐表
评论
0/150
提交评论