密码学
ASCII编码
Base家族
常用的编码,最常用base64
Base:base16、base32、base36、base58、base62、base64、base85、base91、base92、base128
base64
Base64编码是使用64个可打印ASCII字符(A-Z、a-z、0-9、+、/)将任意字节序列数据编码成ASCII字符串,另有“=”符号用作后缀用途。
Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用’=’,因此编码后输出的文本末尾可能会出现1或2个’=’。
为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来
字符集:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
填充字符:=
使用:
1 | import base64 |
base16
1.Base16编码使用16个ASCII可打印字符(数字0-9和字母A-F)对任意字节数据进行编码。
2.Base16先获取输入字符串每个字节的二进制值(不足8比特在高位补0),然后将其串联进来再按照4比特一组进行切分,将每组二进制数分别转换成十进制
3.8比特数据按照4比特切分刚好是两组,所以Base16不可能用到填充符号“=”。
字符集:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
填充字符:=
使用:
1 | import base64 |
base32
Base32编码是使用32个可打印字符(字母A-Z和数字2-7)
字符集:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
填充字符:=
使用:
1 | import base64 |
base36
base36编码是使用0~9的数字,加上所有26个字母,所有的字母要不全大写,要不全小写。
base58
字符为:123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
去掉:0 O l
58=9个阿拉伯数字(去掉0)+24个大写字母(去掉I和O)+25小写字母(去掉l)
字符集:
填充字符:=
使用:
1 |
base62
Base62编码是由10个数字、26个大写英文字母和26个小写英文字母组成
字符集:
填充字符:=
使用:
1 |
base85
字符集:
填充字符:=
使用:
1 |
base91
从94个可打印ASCII字符(0x21-0x7E)中,以下三个字符被省略以构建base91字母:
-(破折号,0x2D)
\(反斜杠,0x5C)
‘(撇号,0x27)
字符集:
填充字符:=
使用:
1 |
base92
比base91 多一个字符 〜
字符集:
填充字符:=
使用:
1 |
base128
字符集:
填充字符:=
使用:
1 |
Base集成
说明:
py:
1 |
shellcode编码
恺撒密码
在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。
例子:位移量3
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC
加密:原字符串通过26个字母按偏移量位移生成新的字母从而生成加密字符串
解密:通过加密原理可以得出只要知道偏移量就可以逆序输入原字符串,由于加密原理比较简单,也可以通过爆破26次来输出所有结果,从输出中判断原字符串
shell:
1 | import string |