常见密码归纳(入门级)
前言:前几天的比赛发现密码忘得有点多,今天总结一下吧。方便自己以后看看。
(相关资料图)
常见密码:1:base密码(base16 ,32,64,58 ,85 ,100);: 2:ROT密码:ROT 5/13/18/47; 3:凯撒密码+变异凯撒; 4:栅栏密码,栅栏密码W型; 5:猪圈密码; 6:维吉尼亚;7: 特殊密码:摩斯密码,培根密码,与佛论禅,百家姓,Uuencode编码转换
一:base家族:base算是最常见的密码之一,经常用到的base64/32/16,少见的有58,85,100,92,93。说一下各个的特点吧。
base64:
实例:YWRtaW4tcm9vdA==特点:一般情况下密文尾部都会有两个等号,明文很少的时候则没有;加密原理:Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用‘=’,因此编码后输出的文本末尾可能会出现1或2个‘=’。
base32:示例:GEZDGNBVGY3TQOJQGE======特点:超过十位会有很多等号,一般大于三个;
base16:示例:61646D696E特点:它的特点是没有等号并且数字要多于字母下面的没有以上三种常见
base58示例:**6tmHCZvhgfNjQu**特点:它最大的特点是没有等号
Base58是用于比特币(Bitcoin)中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。
相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+“和”/"符号。
比特币的Base58字母表:
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
base85:示例:@:X4hDWe0rkE(G[OdP4CT]N#
特点:奇怪的字符比较多,但是很难出现等号。
base100: 示例:👘👛👤👠👥特点:一堆Emoji表情 base小结::看到密文后,先看有没有等号 有等号,考虑64和32,等号特别多≥3个是32,否则64。 没等号,如果由数字和纯字母(大写)组成且数字多,大概率16;字母大小写都有,考虑58; 有@#等符号,直接base85;有enjoy表情,base100. 至于base91,92,这两个有点不常见,base91至少可以百度到,base92只能用下载的工具包或者自己跑脚本了。 base64/32/16解码网站:https://www.qqxiuzi.cn/bianma/base64.htm
base58/85/91/100解码网站: http://www.atoolbox.net/Category.php?Id=27 注:虽然也包括64解密,但是没有最上边的好用,有时候解不出来。 遇到base92自求多福吧,我也只有一个工具包能解92而已
ROT密码:
rot密码其实可以看作是凯撒密码的一种变式本质都是移位运算rot密码按种类大致分为以下几类:
rot5:
原理:只将字符串中的数字进行加密,步数为5,同时在0-9十个数字进行循环,如1在rot5加密后为6,而6在rot5加密后为1。
特点:只对数字进行编码,用当前数字往前数的第5个数字替换当前数字,例如当前为0,编码后变成5,当前为1,编码后变成6,以此类推顺序循环。
rot13只将字符串中的字母进行加密,步数为13,加密方式上最接近凯撒密码,分别在A-Z或a-z之间循环,如A在rot13加密后为N,Z在rot13加密后为M 特点: 只对字母进行编码,用当前字母往前数的第13个字母替换当前字母,例如当前为A,编码后变成N,当前为B,编码后变成O,以此类推顺序循环
rot18:字面意思(5+13=18) 即将上述两种加密方式结合,分别对数字和字母进行相应的操作 特点:由字母数字组成
**rot47:**对数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符ASCII值往前数的第47位对应字符替换当前字符,例如当前为小写字母z,编码后变成大写字母K,当前为数字0,编码后变成符号_。用于ROT47编码的字符其ASCII值范围是33-126。
特点:对数字,字母,符号加密
ROT:小结:纯数字rot5;纯字母rot13;数字+字母rot18;数字+字母+符号rot47 解码网站:https://www.qqxiuzi.cn/bianma/ROT5-13-18-47.php
3 凯撒密码
凯撒密码,最典型的古典密码,由密文和数字秘钥组成。 原理:此为一种位移加密手段,只对26个(大小写)字母进行位移加密,规则相当简单,容易被破解。 特点:看到“{”前有四个(flag格式)或两个(SL格式)字母八成就是凯撒了。 解码网站https://www.qqxiuzi.cn/bianma/kaisamima.php
变异凯撒,只能跑脚本了。 c语言
#includeint main(){int i;char c[]="afZ_r9VYfScOeO_UL^RWUc";//实战改为对应密文即可for(i=0;c[i]!="\0";i++){c[i]=i+5+c[i];//:本题位移数为5;实战需要根据实际实际情况改}printf("%s",c);}
java
public static void main(String[] args) {String ciphertext = "afZ_r9VYfScOeO_UL^RWUc"; char[] plaintext = new char[ciphertext.length()]; for(int i = 0; i < ciphertext.length(); i++){//注意i是从0开始的,所以是5+i plaintext[i] = (char)(((int)ciphertext.charAt(i) + 5 + i) % 128); } for (char i: plaintext) {System.out.print(i); } }
Python:
ciphertext = "afZ_r9VYfScOeO_UL^RWUc"j = 5for i in ciphertext: print(chr(ord(i) + j), end="") j += 1
栅栏密码:
普通型原理栅栏密码(Rail fence Cipher)基础型加密方式,是一种简单的移动字符位置的加密方法,首先把加密的明文分成N个一组,然后把每组的第1、第2、第M个字符连起来,形成无规律的密文字符串。
例如字符串“123456789abc”,首先将字符串分成3组,如下排列: 1234 5678 9abc 依次取每一组字符,组成加密后密文:“15926a37b48c”。
w型栅栏密码(Rail fence Cipher),扩展变种W型,采用先把明文类似"W"形状进行排列,然后再按栏目顺序1-N,取每一栏的所有字符值,组成加密后密文。 比如字符串“123456789”,采用栏目数为3的时,明文将采用如下排列: 1—5—9 -2-4-6-8- –3----7– 取每一栏所有字符串,组成加密后密文:“159246837”。
解码网站:http://www.atoolbox.net/Category.php?Id=27
猪圈密码
对着翻译即可(注意大小写)
维吉尼亚
可以说是凯撒密码的加强版,引入了密钥原理太难解释就跳过了 示例:fmcg{iglmq_wptd_123}特点:有字母秘钥,满足用凯撒的格式但解不出来就是他。 PPS:秘钥一般需要自己解出来,秘钥划重点。
特殊密码
1 :与佛论禅+与熊论道特点:就是你看不懂的佛语 解码链接:http://hi.pcmoe.net/index.html
2: 培根密码特点:ABABABABABAABB只由大写AB组成。 解码链接:https://tool.bugku.com/peigen/
3:摩斯密码特点:三杠一点,没啥说的 用处广泛,有时候与音频题结合使用 解码网站:http://www.all-tool.cn/Tools/morse/
4:百家姓特点:不要多说当你看到一串百家姓的时候多半就是这个暗号了当他解密的的时候前面会多一串固定字符
5:Uuencode编码转换Uuencode是二进制信息和文字信息之间的转换编码,也就是机器和人眼识读的转换。Uuencode编码方案常见于电子邮件信息的传输,目前已被多用途互联网邮件扩展(MIME)大量取代。
原理:Uuencode将输入文字以每三个字节为单位进行编码,如此重复进行。如果最后剩下的文字少于三个字节,不够的部份用零补齐。这三个字节共有24个Bit,以6-bit为单位分为4个群组,每个群组以十进制来表示所出现的数值只会落在0到63之间。将每个数加上32,所产生的结果刚好落在ASCII字符集中可打印字符(32-空白…95-底线)的范围之中。
Uuencode编码每60个将输出为独立的一行(相当于45个输入字节),每行的开头会加上长度字符,除了最后一行之外,长度字符都应该是“M”这个ASCII字符(77=32+45),最后一行的长度字符为32+剩下的字节数目这个ASCII字符。