利用以下python代码编写栏栅加密和解密

Python026

利用以下python代码编写栏栅加密和解密,第1张

修改后运行结果:

a. 加密

1.进行栅栏加密

2.进行栅栏解密

请选择: 1

请输入分组数目 2

请输入列排编号 21

请输明文 abcdefgh

b a

d c

f e

h g

b. 解密

1.进行栅栏加密

2.进行栅栏解密

请选择: 2

请输入分组数目 2

请输入列排编号 21

请输密文 b a d c f e h g

abcdefgh

修改后的代码:

def Encrypt(n,col,M):

row=len(M)/n

if len(M)%n>0:

row+=1

arr=[[""for x in range(0,n)] for y in range(0,row)]

x=0

for i in range(0,row):

for j in range(0,n):

if x<len(M):

arr[i][j]=M[x]

#print M[x],

x+=1

#print "\r\n"

for i in range(0,row):

for j in range(0,n):

m=int(col[j])-1

print arr[i][m],

print "\r\n"

def Decrypt(n, col, C):

C="".join(C.split())

row=len(C)/n

if len(C)%n>0:

row+=1

arr=[[""for x in range(0,n)] for y in range(0,row)]

x=0

for i in range(0,row):

for j in range(0,n):

if x<len(C):

arr[i][j]=C[x]

#print C[x],

x+=1

#print "\r\n"

M=""

for i in range(0,row):

for j in range(0,n):

m=int(col[j])-1

#print arr[i][m],

M+=arr[i][m]

#print "\r\n"

print M

print u"1.进行栅栏加密\r\n2.进行栅栏解密\r\n请选择:".encode("gb2312"),

sel=raw_input()

if int(sel)==1:

print u"请输入分组数目".encode("gb2312"),

n=int(raw_input())

print u"请输入列排编号".encode("gb2312"),

col=raw_input()

print u"请输明文".encode("gb2312"),

M=raw_input()

while len(M)<n*3:

print u"明文必须是分组数目的3倍".encode("gb2312")

M=raw_input()

Encrypt(n,col,M)

else :

print u"请输入分组数目".encode("gb2312"),

n=int(raw_input())

print u"请输入列排编号".encode("gb2312"),

col=raw_input()

print u"请输密文".encode("gb2312"),

C=raw_input()

while len(C)<n*3:

print u"密文必须是分组数目的3倍".encode("gb2312")

C=raw_input()

Decrypt(n,col,C)

Python自身强大的优势决定其不可限量的发展前景。而且从最新Python招聘岗位需求来看,Python工程师的岗位需求量是非常大的Python作为一种通用语言,几乎可以用在任何领域和场合,角色几乎是无限的。它是一种很灵活的语言,能帮你轻松完成编程工作。强大的类库支持,使编写文件处理、正则表达式、网络连接等程序变得相当容易。其次再说python人才的需求,过去五年里,市场对 Python 开发者的需求呈爆发性增长趋势。Python+人工智能人才缺口高达80万,供不应求。

首先从国家的层面上来说,国务院发布《新一代人工智能发展规划》,人工智能正式纳入国家发展战略,在教育上,教育部已将人工智能、物联网、大数据处理划入高中新课标。因为Python在大数据和人工智能领域的爆发性发展, 导致Python方向岗位的薪水在水涨船高,从数据分析来看,月薪在20K-50K不等。千锋教育拥有多年Python培训服务经验,采用全程面授高品质、高体验培养模式,拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。