不知道为何,最后两关的类型突然转变,从欢乐的猜密码变成了,密文破解,参与的人也变少了。
题目是这样,给几串原文和加密后的密码,要求找出加密方式,并从密文推算原文。
明文 密文
antiylabs trzlvtssb
A fall into the pit a gain in your wit tzsiiwfafllpewztnekglrufznwla
Behind bad luck comes good luck sallgbrtqtyrjcehpmmffbhzru
? gqzlhahljazmppbpbafa
所有的加密方式都必须遵从一个原则,可逆性,加密后的密文是不能丢失信息的,
先简单分析一下明文密文的对应关系,完全没有思路,不过可以肯定,其中一定有一种算法
确定一个数字在什么位置被加密成什么密文,而且不会很复杂,在手工可以推算的范畴。
a t,s,e
b s,r,
c r,c,
d b,
e p,a,
f z,
g n,m,
h l,
i l,w,k
j
k j,u
l t,i,h
m h,
n r,f,g
o f,e,
p e,
q
r n,
s b,m,
t z,a,l
u z,y,
v
w w,
x
y v,u
z
根据论坛上的讨论,似乎有了密文和原文就可以推算出字典,但这里原始数据太少了,字典还残缺不完整。
不过根据这些数据可以总结出规律,补全字典
a->e,s,t
b->d,r,s
c->c,q,r
d->b,p,q
e->a,o,p
f->z,n,o
g->y,m,n
h->x,l,m
i->w,k,l
j->v,j,k
k->u,i,j
l->t,h,i
m->s,g,h
n->r,f,g
o->q,e,f
p->p,d,e
q->o,c,d
r->n,b,c
s->m,a,b
t->l,z,a
u->k,y,z
v->j,x,y
w->i,w,x
x->h,v,w
y->g,u,v
z->f,t,u
这样加密算法一定是根据某个密钥来确定密文是三列中的哪一个。
简单推算密钥如下
明文 A f a l l i n t o t h e p i t a g a i n i n y o u r w i t
密文 t z s i i w f a f l l p e w z t n e k g l r u f z n w l a
密文字母列号 2 3 1 2 2 3 1 2 2 3 1 2 2 3 1 2 2 3 1 2 2 3 1 2 2 3 1 2 2
这样就可以推算出原文“ time will tell”
这里可以写一个小程序来实现加密和解密,不过先留个坑吧。