0宽字符加密_CTF密码学常见加密解密方式

CTF密码学常见加密解密方式

c37c941b6398569b815eead8e090afb3.png


1.base64编码

     Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,base64就是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应4个base64单元,即3个字节可表示4个可打印字符。它可用来作为电子邮件的传输编码。在base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同系统中而不同。

5c1217cb24b5d7e8358159583f9027e0.png

如果要编码的字节数不能被3整除,最后会多出1个或2个字节,那么可以使用下面的方法进行处理:先使用0字节值在末尾补足,使其能够被3整除,然后再进行base64的编码。在编码后的base64文本后加上一个或两个“=”号,代表补足的字节数。也就是说,当最后剩余一个八位字节(一个byte)时,最后6位的base64字节块有四位是0值,最后附加上两个等号;如果最后剩余两个八位字节(2byte)时,最后一个6位的base字节块有两位是0值,最后附加一个等号

2.凯撒密码

      凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。由此可见,位数就是凯撒密码加密和解密的密钥。现今又叫“移位密码”,只不过移动的位数不一定是3位而已。

3.栅栏密码

栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文

4.摩斯密码

摩尔斯电码(英语:Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。是由美国人艾尔菲德·维尔(Alfred Lewis Vail)与萨缪尔·摩尔斯(Samuel Finley Breese Morse)在1836年发明。
摩尔斯电码是一种早期的数字化通信形式,但是它不同于现代只使用0和1两种状态的二进制代码,它的代码包括五种:

1.点(.)

2.划(-)

3.每个字符间短的停顿(在点和划之间的停顿)

4.每个词之间中等的停顿

5.以及句子之间长的停顿

5.猪圈密码

猪圈密码(亦称朱高密码、共济会暗号、共济会密码或共济会员密码),是一种以格子为基础的简单替代式密码。即使使用符号,也不会影响密码分析,亦可用在其它替代式的方法。

174c600479bbde9c2f4e8b0cd4d7d0b8.png

6.维吉尼亚密码

帮大家找到个图解,大概会好理解一些

80b4e33c913e7d7df633d403aeab7a12.png

a03e729d4acfbe3f9aab9b6ec5f5c96e.png

7.培根密码

培根密码,又名倍康尼密码(英语:Bacon’s cipher)是由法兰西斯·培根发明的一种隐写术。

特点:
培根密码本质上是将二进制信息通过样式的区别,加在了正常书写之上。培根密码所包含的信息可以和用于承载其的文章完全无关。培根密码实际上就是一种替换密码,根据所给表一一对应转换即可加密解密 。它的特殊之处在于:可以通过不明显的特征来隐藏密码信息,比如大小写、正斜体等,只要两个不同的属性,密码即可隐藏。

给大家找到一段代码

letters1 = [    'A', 'B', 'C', 'D', 'E', 'F', 'G',    'H', 'I', 'J', 'K', 'L', 'M', 'N',    'O', 'P', 'Q', 'R', 'S', 'T',    'U', 'V', 'W', 'X', 'Y', 'Z',]letters2 = [    'a', 'b', 'c', 'd', 'e', 'f', 'g',    'h', 'i', 'j', 'k', 'l', 'm', 'n',    'o', 'p', 'q', 'r', 's', 't',    'u', 'v', 'w', 'x', 'y', 'z',]cipher1 = [    "aaaaa", "aaaab", "aaaba", "aaabb", "aabaa", "aabab", "aabba",    "aabbb", "abaaa", "abaab", "ababa", "ababb", "abbaa", "abbab",    "abbba", "abbbb", "baaaa", "baaab", "baaba", "baabb",    "babaa", "babab", "babba", "babbb", "bbaaa", "bbaab",]cipher2 = [    "AAAAA", "AAAAB", "AAABA", "AAABB", "AABAA", "AABAB", "AABBA",    "AABBB", "ABAAA", "ABAAA", "ABAAB", "ABABA", "ABABB", "ABBAA",    "ABBAB", "ABBBA", "ABBBB", "BAAAA", "BAAAB", "BAABA",    "BAABB", "BAABB", "BABAA", "BABAB", "BABBA", "BABBB",]def bacon1(string):    lists = []    # 分割,五个一组    for i in range(0, len(string), 5):        lists.append(string[i:i+5])    # print(lists)    # 循环匹配,得到下标,对应下标即可    for i in range(0, len(lists)):        for j in range(0, 26):            if lists[i] == cipher1[j]:                # print(j)                print(letters1[j], end="")    print("")def bacon2(string):    lists = []    # 分割,五个一组    for i in range(0, len(string), 5):        lists.append(string[i:i+5])    # print(lists)    # 循环匹配,得到下标,对应下标即可    for i in range(0, len(lists)):        for j in range(0, 26):            if lists[i] == cipher2[j]:                # print(j)                print(letters2[j], end="")    print("")

上面的代码缺个主函数,不过还是在线解密比较方便,最后我加了链接。

import Baconif __name__ == "__main__":    Bacon.bacon1("aababababbaaaaaaabba")    Bacon.bacon2("AABABABABAAAAAAAABBA")

8.当铺密码

当铺密码是一种很有意思的密码,专门用来加密数字的,不需要密钥,明文信息包含在加密后的密文中。

它通过一个汉字中隐藏的信息:笔画数,来将汉字和数字关联起来,将汉字定义为明文,将数字定义为密文,加密是将数字映射到对应笔画的汉字,解密是将汉字按照笔画映射回数字。

有很多汉字的笔画数是相同的,所以可能会有多个明文(汉字)对应同一个密文(数字),当然这个主要是看汉字笔画映射表的选择,如果映射表只准备了9个汉字,每种笔画有一个汉字对应则是一对一的,否则是一对多的。一对一的话有个缺点就是如果要加密的明文中有重复数字,比如33,转换为“飞马”比“三三”更难总结出规律,而这种没有秘钥的加密方式重要的就是隐藏自己的规律,所以一对多会更难被破译。

9.ROT5加密

ROT5 是 rotate by 5 places 的简写,意思是旋转5个位置,其它皆同。下面分别说说它们的编码方式:
ROT5:只对数字进行编码,用当前数字往前数的第5个数字替换当前数字,例如当前为0,编码后变成5,当前为1,编码后变成6,以此类推顺序循环。

  • 栅栏密码:https://www.qqxiuzi.cn/bianma/zhalanmima.php

  • 凯撒密码:https://www.qqxiuzi.cn/bianma/kaisamima.php

  • 猪圈密码:http://www.nicetool.net/app/pigpen_chiper_decrypt.html

  • 维吉尼亚密码:https://www.qqxiuzi.cn/bianma/weijiniyamima.php

  • 培根密码:http://tool.bugku.com/peigen/

  • 摩斯密码:https://www.jb51.net/tools/morse.htm

  • 当铺密码:https://www.cnblogs.com/liume/p/10126444.html

  • Rot5加密:只对数字进行编码,用当前数字往前数的第5个数字替换当前数字

  • Rot13加密:只对字母进行编码,用当前字母往前数的第13个字母替换当前字母,https://www.jisuan.mobi/puzzm6z1B1HH6yXW.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值