玩命加载中 . . .

密码学


密码学

解题时注意题目的提示,包括 flag{}格式提示

1 ASCII编码

  • 常用不可打印字符:%00,%0D,%0A,%7F,%80

  • 可以使用burpsuit解码

2 Base64 家族

  • Base64编码原理
    • Base64的码表只有64个字符,如果要表达64个字符的话,使用6的bit即可完全表示(2的6次方为64)。
    • 因为Base64的编码只有6个bit即可表示,而正常的字符是使用8个bit表示,8和6的最 小公倍数是24,所以4个Base64字符可以表示3个标准的asclI字符;
    • 如果是字符串转换为Base64码,会 先把对应的字符串转换为asclI码表对应的数字,然后再把数字转换为2进制,比 如a的asclI码为97,97的二进制是: 01100001,把8个二进制提取成6个, 剩下的2个二进制和
      后面的二进制继续拼接,最后再把6个二进制码转换为Base64对应的编码
  • 可以使用burpsuit解码,hackbar解码

3 Quoted-printable编码方法

4 Xxencode编码

  • 原理:XXencode将输入文本以每三个字节为单位进行编码。如果最后剩下的资料少于三个字节,不够的部份用零补齐。这三个字节共有24个Bit,以6bit为单位分为4个组,每个组以十进制来表示所出现的数值只会落在0到63之间。以所对应值的位置字符代替。它所选择的可打印字符是: +—0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,一共64个字符。
  • 与base64在字符上的差别:去掉了 /,多了 -
  • 每60个编码输出(相当于45个输入字节)将输出为独立的一行,每行的开头会加上长度字符,除了最后一行之外,长度字符都应该是 h 这个字符(45,刚好是64字符中,第45位h字符),最后一行的长度字符为剩下的字节数目在64字符中位置所代表字符。

5 UUencode编码

  • 原理:Uuencode将输入资料以每三个字节为单位进行编码,如此重复进行。如果最后剩下的资料少于三个字节,不够的部份用零补齐。这三个字节共有24个Bit,以6-bit为单位分 为4个群组,每个群组以十进制来表示所出现的数值只会落在0到63之间。将每个数加上32,所产生的结果刚好落在ASCII字符集中可打印字符(32-空白...95-下划线) 的范围之中。每60个编码输出(相当于45个输入字节)将输出为独立的一行,每行的开头会加上长度字符,除了最后一行之外,长度字符都应该是 M 这个ASCII字符(77=32+45) ,最后一行的长度字符为32+剩下的字节数目这个ASCII字符。如果是一个0字节那它应该被转换为0X60而不是0X20,因为(前引用`) 优于0X20 (空格)。

6. URL编码

7. Escape/Unescape编码(逐渐废弃)

  • 原理:Escape/Unescape加密解码/编码解码,又叫%u编码,从以往经验看编码字符串出现有"u",它是unicode编码,Escape编码采用是 UTF-16BE 模式。这样一来问题非常简单了。Escape编码/加密,就是字符对应UTF-16 16进制表示方式前面加%u。Unescape解码/解密,就是去掉”%u”后,将16进制字符还原后,由UTF-16转码到自己目标字符。如:字符“中”,UTF-16BE是:6d93,因此Escape是“%u6d93”,反之也一样!因为目前%字符,常用作URL编码,所以%u这样编码已经逐渐被废弃了!

8. HTML实体编码

9.敲击码

10. 摩尔斯密码

11. 盲文

12. 置换类密码的简介

  • 原理:置换是一个简单的换位操作,每个置换都可以用一个置换矩阵Ek来表示。每个置换都有一个与之对应的逆置换Dk。
  • 置换密码的特点是仅有一个发送方和接受方知道的加密置换(用于加密)及对应的逆置换(用于解密)。它是对明文L长字母组中的字母位置进行重新排列,而每个字母本身并不改变。

13.列置换

  • 原理:加密将明文按固定长m分组,即每行m个字母,在密钥控制下按某一顺序交换列,最后按列优先的顺序依次读出,即产生了密文。
  • 解密:逆过程。
  • 解题时注意题目的提醒:todaygoodday,如果前面出现了,就把后面的去掉:todayg,按照字母顺序,结果为542163

14.周期置换

  • 例:
    • 密钥:置换矩阵Ek= 1 234 5- -> 2345 1
    • 密文: ellcH orldw
    • 明文为Hello world

15.栅栏密码

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

16.曲路密码

  • 曲路密码(Curve Cipher)是一种换位密码,需要事先双方约定密钥(也就是曲路路径)。
  • 例:

17.代换密码简介

  • 对明文进行替换,一一对应的关系

18.加法密码(凯撒)

  • 凯撒密码就是典型的加法密码,用后面的第三个字母代替。
  • 变异凯撒:

19.埃特巴什码

  • 原理:埃特巴什码(Atbash Cipher)是一种以字母倒序排列作为特殊密钥的替换加密,也就是下面的对应关系:

20.乘法密码

  • 字符 * key (mod 26)

21.仿射密码

22.密钥词组代替密码

23.培根密码

  • 培根密码表:有时,题目会用a代表大写,b代表小写

  • data='bacoNisoneofaMerICaSsWEethEartSitsAdARLinGSuCCuLEntf0oDtHAtPaIRsFlawLE'
    cipher = ''
    for x in data:
        x = ord(x)
        if x<=90 and  x>=65 :
            cipher += 'b'
        else :
            cipher += 'a'
    print cipher

24.ROT系列

25.猪圈密码

  • 密码表:

26.Vernam 密码(维吉尼亚密码)

  • 密码表:
  • 明文是横行,密钥是列,密文是表格中的位置

27.希尔密码

  • 希尔密码(HillCipher)是运用基本矩阵论原理的替换密码,由LesterS. Hill在1929年发明。每个字母当作26进制数字: A=0, B=1, C=2…一串字母当成n维向量,跟一个n X n的矩阵(密钥)相乘,再将得出的结果MOD 26。
  • 知道密文和密钥 找 逆矩阵 ??
  • https://www.cryptool.org/en/

28.playfair cipher(公平的玩)

  • 原理:波雷费密码(英语: Playfair cipher)是一种对称式密码,是首种双字母取代的加密法。选取一个英文字作密钥。除去重复出现的字母。将密钥的字母逐个逐个加入5X 5的矩阵内,剩下的空间将未加入的英文字母依a-z的顺序加入。(将Q去除, 或将I和J视作同一字。)将要加密的讯息分成两个一组。若组内的字母相同,将X (或Q)加到该组的第一个字母后,重新分组。若剩下一个字,也加入X字。在每组中,找出两个字母在矩阵中的地方。

29.波利比奥斯方阵密码

  • 波利比奧斯方阵密码(PolybiusSquareCipher或称波利比奥斯棋盘)是棋盘密码的一种,是利用波利比奧斯方阵进行加密的密码方式,简单的来说就是把字母排列好,用坐标(行列)的形式表现出来。字母是密文,明文便是字母的坐标。

30.ADFGX密码

  • ADFGX密码(ADFGX Cipher)是结合了改良过的Polybius方格替代密码与单行换位密码的矩阵加密密码,使用了5个合理的密文字母:A,D,F,G,X,这些字母之所以这样选择是因为当转译成摩尔斯电码(ADFGX密码是德国军队在一战发明使用的密码)不易混淆,目的是尽可能减少转译过程的操作错误。

31.ADFGVX密码

  • ADFGVX密码实际上就是ADFGX密码的扩充升级版,一样具有ADFGX密码相同的特点,加密过程也类似,不同的是密文字母增加了V,使得可以再使用10数字来替换明文。
  • 通过题目给的明文,计算得到 对应的棋盘密码表
  • https://xz.aliyun.com/t/3603

31.双密码

32.三分密码

  • 密码表:
  • 例子:

33.四方密码

  • 密码表:

34.二方密码

35.自动密钥密码

36.博福特密码

37.滚动密钥密码

38.Porta密码

39.词频分析

参考


文章作者: kylin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kylin !
评论
  目录