python密码学换位密码及换位解密转置加密教程_第1页
python密码学换位密码及换位解密转置加密教程_第2页
python密码学换位密码及换位解密转置加密教程_第3页
python密码学换位密码及换位解密转置加密教程_第4页
python密码学换位密码及换位解密转置加密教程_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论