2.2 代换密码 – lmn-【密码学】小世界-安全文库-NGC660安全实验室

2.2 代换密码 – lmn

2.2 代换密码 – lmn

1647838726155-c16f7b0c-5258-488a-99ad-53602a16edec

0x01 代换密码与置换密码

首先我们先不看代换密码的定义,通过代换密码和置换密码的区别来了解代换密码到底是什么

  • 置换密码:是指明文中各字符的位置次序重新排列得到密文
  • 代换密码:不同于置换密码,代换密码不是用密码中的原文,就是讲明文中的每个字符替代成密文中的另一个字符,替代后的各个字母保持原来的位置,在对密文进行逆替换就可以恢复出明文

详细置换密码可以参考我的另一片专门讲置换密码的Wiki
https://www.yuque.com/tidesec/grghkw/renc8p

0x02 代换密码概要

代换密码,也可称为替代密码,是指先建立一个替换表,加密时将需要加密的明文依次通过查表,替换为相应的字符
明文字符被逐个替换后,生成无任何意义的字符串,即密文,替代密码的密钥就是其替换表

代换密码分类

1647838736316-b95e05f8-70b0-4cee-aa83-55c22fba87f2

0x03 单表替换

单表替代密码对明文中的所有字母都使用一个固定的映射

一般单表替代密码

单表替换CTF例题

Training: Crypto – Digraphs by Gizmore

1647838751178-312170f8-8347-40c3-91c3-083b05a99fe6

题目意思:
这次我使用有向图加密方案将一个字母加密为两个字符。
只需 26 个不同的字母,我就可以加密多达 26*26 个不同的字符。
另一个大问题是共享密钥,但密码很容易被破解。
消息使用当前语言,以正确的大小写和标点符号书写。没有换行符。

1647838757391-80a7950c-586e-412e-a172-39188ad1ab64

由此得出每两位对应一个字母或字符

tqlgwdfpsgunhdufhwunhdzmlgwdlapa vxlguf aclsdhsgcvlzhdlsac hdgnzmla kplslalaunfpls laufdhdhlslalaldufhwhwcvpa djunla wdlghd hdlglg aczmldldzmdhufhwhd lszmhdgnlssghe xsunla zmhdhv djlshwhwhe fplglgac dblgejpa jawdhdlssg hdgnzmla hnlscvxslgsgac unla lalghwufhdzmlgwdzo ejldejldlgejhwejwdldlshwpa

查看规律,因为有符号,猜测符号在最后一位,pa应该对应符号

tqlgwdfpsgunhdufhwunhdzmlgwdlapa
vxlguf aclsdhsgcvlzhdlsac hdgnzmla kplslalaunfpls laufdhdhlslalaldufhwhwcvpa
djunla wdlghd hdlglg aczmldldzmdhufhwhd lszmhdgnlssghe xsunla zmhdhv djlshwhwhe fplglgac dblgejpa
jawdhdlssg hdgnzmla hnlscvxslgsgac unla lalghwufhdzmlgwdzo ejldejldlgejhwejwdldlshwpa

pa之前的字母有30个,应该对应一个单词,tqlgwdfpsgunhdufhwunhdzmlgwdla

1647838779743-0ea17dc7-3556-4be2-88ad-232ee1933c15

大胆猜测tqlgwdfpsgunhdufhwunhdzmlgwdla在此语境下应为congratulations

'tq':'c',
'lg':'o',
'wd':'n',
'fp':'g',
'sg':'r',
'un':'a',
'hd':'t',
'uf':'u',
'hw':'l',
'un':'a',
'hd':'t',
'zm':'i',
'lg':'o',
'wd':'n',
'la':'s',
'pa':'.',
a = "tqlgwdfpsgunhdufhwunhdzmlgwdlapa vxlguf aclsdhsgcvlzhdlsac hdgnzmla kplslalaunfpls laufdhdhlslalaldufhwhwcvpa djunla wdlghd hdlglg aczmldldzmdhufhwhd lszmhdgnlssghe xsunla zmhdhv djlshwhwhe fplglgac dblgejpa jawdhdlssg hdgnzmla hnlscvxslgsgac unla lalghwufhdzmlgwdzo ejldejldlgejhwejwdldlshwpa"
b = a.split()
dic = {'tq':'C','lg':'o','wd':'n','fp':'g','sg':'r','un':'a','hd':'t','uf':'u','hw':'l','un':'a','hd':'t','zm':'i','lg':'o','wd':'n','la':'s','pa':'.'}
for i in b:
    c =[]
    for j in range(0,len(i),2):
        c.append(i[j:j+2])
    print(c)

    d = []
    for k in c:
        if k in dic:
            d.append(dic[k])
        else:
            d.append('_')
    txt = ''.join(d)
    print(txt)
    print()

1647838789662-8ee63a3a-33e4-4d02-b320-13aeaf4ee94f

根据“congratulations.” 可以推测出其他单词

_ou - You
t_is - this
__ssag_ - message
su___ss_ull_. - successfully
goo_ - good

得到新的key

'vx' : 'Y'
'gn' : 'h'
'kp' : 'M'
'ls' : 'e'
'dh' : 'c'
'pa' : ','//猜测
'ac' : 'd'

1647838798820-fda7f2e5-a61c-44b6-bc15-7ad463ef2805

迭代进行

'cv' : 'y'
'lz' : 'p'
'ld' : 'f'
'dj' : 'w'
'hv' : 's'
'he' : ','//猜测

1647838806252-7b0ebd08-2398-4bc1-ba7e-1665df70579f

'hn' : 'k'
'xs' : 'b'
'db' : 'j'
'ej' : 'b'

1647838813546-ad082cb5-2652-40a1-83f3-31c5af2f2744

bfbfoblbnfel

移位密码

例如恺撒密码
恺撒密码(英语:Caesar cipher)
或称恺撒加密、恺撒变换、变换加密
是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文

1647838822027-62413178-06d3-485a-88a2-79fb7eea368b

详细凯撒密码可以参考我的另一片专门讲凯撒密码的Wiki
https://www.yuque.com/tidesec/grghkw/xbv21t

仿射密码

仿射密码为单表加密的一种,字母系统中所有字母都藉一简单数学方程加密,对应至数值,或转回字母

仿射密码的明文空间和密文空间与移位密码相同,但密钥空间为:
K={(k1,k2)| k1,k2∈Z26,gcd(k1,26)=1}

密钥短语密码

  1. 选用一个英文短语或单词串作为密钥,去掉其中重复的字母得到一个无重复字母的字符串
  2. 将字母表中的其它字母依次写于此字母串后,就可构造出一个字母替代表
  3. 当选择上面的密钥进行加密时,若明文为“china”,则密文为“yfgmk”。显然,不同的密钥可以得到不同的替换表
  4. 对于明文为英文单词或短语的情况时,密钥短语密码最多可能有26!=4×1026个不同的替换表

0x04 多表替换

单表替代密码表现出明文中单字母出现的频率分布与密文中相同
多表替代密码使用从明文字母到密文字母的多个映射来隐藏单字母出现的频率分布

每个映射是简单替代密码中的一对一映射多表替代密码将明文字母划分为长度相同的消息单元,称为明文分组,对明文成组地进行替代,同一个字母有不同的密文,改变了单表替代密码中密文的唯一性,使密码分析更加困难

总的来说就是利用多次替换

维吉尼亚密码

维吉尼亚密码(又译维热纳尔密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式

1647838831187-b67433dc-9736-4150-a1c1-8fd4877fe1b4

明文为:
VIRGINIACIPHER

密钥为:
SECRETKEY

表格的行代表密钥,列代表明文
明文第1个:V
密文第1个:S 对应密文:N
明文第2个:I
密文第2个:E 对应密文:M
明文第3个:R
密文第3个:C 对应密文:T
明文第4个:G
密文第4个:R 对应密文:X

最后结果为:NMTXMGSEAATJVV

希尔(Hill)密码

Hill密码算法的基本思想是将n个明文字母通过线性变换,将它们转换为n个密文字母。解密只需做一次逆变换即可。

一次一密密码(One Time Pad)

若替代码的密钥是一个随机且不重复的字符序列,这种密码则称为一次一密密码,因为它的密钥只使用一次

该密码体制是美国电话电报公司的Joseph Mauborgne在1917年为电报通信设计的一种密码,所以又称为Vernam密码
Vernam密码在对明文加密,前首先将明文编码为(0,1)序列,然后再进行加密变换

Playfair密码

Playfair密码是一种著名的双字母单表替代密码,实际上Playfair密码属于一种多字母替代密码,它将明文中的双字母作为一个单元对待,并将这些单元转换为密文字母组合

替代时基于一个5×5的字母矩阵,字母矩阵构造方法同密钥短语密码类似,即选用一个英文短语或单词串作为密钥,去掉其中重复的字母得到一个无重复字母的字符串,然后再将字母表中剩下的字母依次从左到右、从上往下填入矩阵中,字母I,j占同一个位置

Reference
https://baike.baidu.com/item/替代密码/5838472
请登录后发表评论

    请登录后查看回复内容