栅栏加密在线(栅栏加密法密码转换)

2023-03-01 0:40:23 密码用途 思思

栅栏密码

所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话)

加密原理:把将要传递的信息中的字母交替排成上下两行,再将下面一行字母排在上面一行的后边,从而形成一段密码。

栅栏密码加密

比如明文:THERE IS A CIPHER

去掉空格后变为:THEREISACIPHER

两个一组,得到:TH ER EI SA CI PH ER

先取出第一个字母:TEESCPE

再取出第二个字母:HRIAIHR

连在一起就是:TEESCPEHRIAIHR

这样就得到需要的密码了。

解密

而解密的时候,先把密文从中间分开,变为两行:

T E E S C P E

H R I A I H R

再按上下上下的顺序组合起来:

THEREISACIPHER

分出空格,就可以得到原文了:

THERE IS A CIPHER

以上内容参考:百度百科-栅栏密码、百度百科-电码

栅栏加密在线(栅栏加密法密码转换) 第1张

ivoleuoy栅栏密码怎么解

打眼一看 爱老虎油 换成数字 顺序直观些。ILOVEYOU 12345678。

所以IVOLEUOY 14325876

所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话)

扩展

(1)在选择行数时可以使多行,这样对于加密强度有所提高。

(2)可以在加密之后在使用其他密码进行加密,增加强度

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

修改后运行结果:

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)%n0:

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 xlen(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)%n0:

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 xlen(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)

3栏栅栏密码怎么解密

Q:BIG GUINS如何分3栏如何解,求推理过程,答案

A:

1.分析:BIG GUINS共有8个字母,分3行的话,就是1、2行有3个字母,第三行有2个字母.第三行最后一位可空或用其它字母或符号补上(即有两种写法)

2.解密

去掉空格---BIGGUINS

把8个字母按3-3-2的形式分成BIG GUI NS这三组字母

(1).最后一位空:把每组字母的第一位相连,得到BGN;第二位相连得到IUS,第三位相连得到GI,即可得密码为BGN IUS GI.

最后去掉空格得到最终密码BGNIUSGI.

(2)最后一位补上其它字母或符号:把每组字母的第一位相连,得到BGN;第二位相连得到IUS,第三位相连得到GI,也可补一个@使之变为GI@.最后得到最终密码为BGNIUSGI@.

栅栏加密法是什么啊?

栅栏加密法是一种比较简单快捷的加密方法。栅栏加密法就是把要被加密的文件按照一上一下的写法写出来,再把第二行的文字排列到第一行的后面。相应的,破译方法就是把文字从中间分开,分成2行,然后插入。栅栏加密法一般配合其他方法进行加密。