密码解密主要是用运用什么原理 (栅栏密码解密工具怎么用的)

2023-03-14 15:54:30 密码用途 思思

栅栏易位法。即把将要传递的信息中的字母交替排成上下两行,再将下面一行字母排在上面一行的后边,从而形成一段密码。撒移位密码。也就是一种最简单的错位法,将字母表前移或者后错几位。进制转换密码。比如给你一堆数字,乍一看头晕晕的,你可以观察数字的规律,将其转换为10进制数字,然后按照每个数字在字母表中的排列顺序,拼出正确字母。摩尔斯密码。翻译不同,有时也叫摩尔密码。*表示滴,-表示哒,如下表所示比如滴滴哒就表示字母U,滴滴滴滴滴就表示数字5。另外请大家不要被滴哒的形式所困,我们实际出密码的时候,有可能转换为很多种形式,例如用0和1表示,迷惑你向二进制方向考虑,等等。摩尔斯是我们生活中非常常见的一种密码形式,例如电报就用的是这个哦。下次再看战争片,里面有发电报的,不妨自己试着破译一下电报。维热纳尔方阵。上面所说的频率分析,很容易破解较长篇幅的密文,于是维热纳尔继承前人的经验,创造出了这个维热纳尔方阵,从而克服了词频分析轻易能够破解密码的弊端,成为一种较为强大的密码编译形式。字母频率密码。关于词频问题的密码,词频法其实就是计算各个字母在文章中的出现频率,然后大概猜测出明码表,最后验证自己的推算是否正确。这种方法由于要统计字母出现频率,需要花费时间较长,本人在此不举例和出题了,有兴趣的话,参考《跳舞的小人》和《金甲虫》。

栅栏密码

所谓栅栏密码,就是把要加密的明文分成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

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

利用以下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)

ivoleuoy栅栏密码怎么解

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

所以IVOLEUOY 14325876

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

扩展

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

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

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@.