一:常见编码类型
1、ASCII编码
(1)特征:
在线网址http://www.mokuge.com/tool/asciito16/
2、base家族编码
(1)base64编码
特点
:由A-Z,a-z,0-9,+,/64个可见字符组成、==符号作为后缀填充、不属于编码字符;一般情况下密文尾部会有两个==符号,并且有大写字母和小写字母的混合组成
原理:3个8位字符变成4个6位字符,之后在6位的前面补两个0;形成4个8位的形式
eg:
(2)base32编码
特点
:由字母A-Z,数字2-7共32个可见字符组成;"=" 的作用作为后缀填充
(3)base16编码
特点:使用0-9和字符A-F共计16个可见字符组成,不会出现"="字符
(4)base58编码
特点
:用于比特币的一种独特的加密方法,主要用于产生比特比的钱包地址;相比于Base64,base58不使用数字0;字母大写O,字母大写I,字母小写l,以及+和/符号
(5)base62编码
特点
:相比于base64,不会使用+和/符号,就刚好62个可见字符
(6)base91;base92编码
(7)base100编码
特点
:就是一堆表情
3、unicode编码
(1)特点:密文中有多个\uxxx
4、栅栏密码
(1)特征:所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话,一般常见的就是两栏(key=2);一般来说见到一堆字母没有空格,就应该想一想是不是栅栏。
eg1:
fa{fe13f590lg6d46d0d0}
4、摩尔斯密码
(1)特征:密文由不规律的.、/、-和空格组成
eg1:
..-./.-../.-/--./----.--/-../...--/..-./-.-./-.../..-./.----/--.../..-./----./...--/----./----./...../-----/....-/-----.-
(2)解密:(发现里面还有URL编码)(进一步处理得到flag);解密网站:https://www.uutils.com/enc/morse.html
5、URL编码
特点:url编码的特征是使用 "%" 其后跟随两位的十六进制数来替换非 ASCII 字符
6、shellcode编码
(1)特点:
是一段利用软件漏洞而执行的代码、shellcode是16进制的机器码
7、XXencode编码
8、UUencode编码
9、AAencode编码
将JS代码转换成表情包,也就是常说的颜文字JS加密
10、JSfuck编码
特点:JSfuck只使用6种字符[]!()+
来书写任何的JS代码
11、jother编码
特点:jother只使用8种字符[]!()+{}
来书写任何的JS代码
12、Brainfuck
特点:使用8种字符,所有的操作都由这八种字符组成来完成
eg:
13、MD5加密
(1)#MD5中字符都是在a-f0-9之间;分为16位和32位
14、JS混淆
(1)特点:通常在JS脚本里面使用eval与function函数进行混淆
eg:
<script>
eval("\x64\x65\x65\x45\x76")
</script>
(2)JS在线解混淆:http:/www.atool.org/jscompression.php
等等......
二:稀奇古怪的编码
1、社会主义核心价值观编码
特点:
2、与佛伦禅
特带:以佛曰
开头
3、以熊论道
http://hi.pcmoe.net/
4、兽音加密
https://roar.iiilab.com/
5、ook加密
(1)特征:ook密码中有大量ook,加上一些符号;Ook! has only three distinct syntax elements:Ook.Ook?Ook!这种就是ook密码
或者是这种类型的:
(2)解密:https://www.splitbrain.org/services/oo
6、+-<>加密
-+<>密码解密:https://brainfuck-visualizer.netlify.app/
7、敲击码加密
特点:
8、猪圈密码
(1)建材下载之后发现是base64编码;尝试base64编码转化文本,不成功,转换为图片成功了
发现是猪圈密码:
解密拿到flag
9、棋盘密码
(1)解密
数据密码之后告诉我是一种5比特的编码,直接百度,找到解码网站
10、元音加密
11、hill密码
eg:
等等......
三:复杂密码类型
1、凯撒密码
在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。
加密就是明文向后移动展现出对应的密文。
解密就是密文向前移动展现出对应的明文。
eg:
2、云影密码
此密码运用了1248代码,因为本人才疏学法,问未发现有过使用的先例,因此暂归为原创密码。由于这个密码,我和片风云影初识,为了纪念,将其命名为“云影密码”。
有了1,2,4,8这四个苘单的数字,你可以以加法表示出0~9任何个数字,例如0=28,7=124,9=18这样,再用1-26来表示A-Z,就可以用作密码了。为了不至于混乱,我个人引入了第五个数字0,来用作间隔,以遍免翻译错误,所以还可以称“01248密码”
注意(3个及以上数字时):
虽然是相加,但是可以在数字内不按顺序相加,如124可写成(12)4和1(24)结果分别是7和16,只要保证不大于26即可
3、培根密码
培根所用的密码是一种本质上用二进制数设计的,没有用通常的0和1来表示,而是采用a和b
eg:
4、转轮机加密
解释:指解密中密文涉及转轮机加密,转轮机密文的特点是等长的分好组的乱序字母,原理是转齿轮把一个字母换成另一个来拼成一句话,所以会有多组密钥,但是只有一组密文。
(1)eg:
点击查看代码
rotor = [ #这里是要输入的转轮机原始字符串]cipher = "NFQKSEVOQOFNP" #这是要输入转轮机密文key = [2,3,7,5,13,12,9,1,8,10,4,11,6] #这是要输入转轮机密钥tmp_list=[]for i in range(0, len(rotor)):tmp=""k = key[i] - 1for j in range(0, len(rotor[k])):if cipher[i] == rotor[k][j]:if j == 0:tmp=rotor[k]breakelse:tmp=rotor[k][j:] + rotor[k][0:j]breaktmp_list.append(tmp)# print(tmp_list)message_list = []for i in range(0, len(tmp_list[i])):tmp = ""for j in range(0, len(tmp_list)):tmp += tmp_list[j][i]message_list.append(tmp)print(message_list)def spread_list(lst):for item in lst:if isinstance(item,(list,tuple)):yield from spread_list(item)else:yield itempassif __name__ == '__main__':for i in spread_list(message_list):print("*"*25)print(i)
ECC的主要优势是在某些情况下它比其他的方法使用更小的密钥——比如RSA加密算法——提供相当的或更高等级的安全。ECC的另一个优势是可以定义群之间的双线性映射,基于Weil对或是Tate对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。其缺点是同长度密钥下加密和解密操作的实现比其他机制花费的时间长 [1] ,但由于可以使用更短的密钥达到同级的安全程度,所以同级安全程度下速度相对更快。一般认为160比特的椭圆曲线密钥提供的安全强度与1024比特RSA密钥相当。
eg:
等等......
四:离线工具分享
1、常用脚本
2、常用工具
(1)CaptfEncoder V2工具箱
几乎涵盖可常见的加密解密的方式,自行在github下载
(2)不一一介绍了,自行百度科普
注意:密码学这方面很杂很乱,变化多端、此文章仅仅做了部分讲解,密码学这部分就告一段落了!谢谢大家!