常见加密算法和编码识别
常见加密算法和编码识别
Base64
Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法。转换的时候,将 3 字节的数据,先后放入一个 24 位的缓冲区中,先来的字节占高位。数据不足 3 字节的话,于缓冲器中剩下的比特用 0 补足。每次取出 6 比特(因为 ),按照其值选择ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
中的字符作为编码后的输出,直到全部输入数据转换完成。
通常而言 Base64 的识别特征为索引表,当我们能找到 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
这样索引表,再经过简单的分析基本就能判定是 Base64 编码。
当然,有些题目 base64 的索引表是会变的,一些变种的 base64 主要 就是修改了这个索引表。
Tea
在密码学中,微型加密算法(Tiny Encryption Algorithm,TEA)是一种易于描述和执行的块密码,通常只需要很少的代码就可实现。其设计者是剑桥大学计算机实验室的大卫 · 惠勒与罗杰 · 尼达姆。
参考代码:
tea
1 |
|
xtea
1 |
|
xxtea
1 |
|
大佬文章
https://www.jianshu.com/p/4272e0805da3
RC4
在密码学中,RC4(来自 Rivest Cipher 4 的缩写)是一种流加密算法,密钥长度可变。它加解密使用相同的密钥,因此也属于对称加密算法。RC4 是有线等效加密(WEP)中采用的加密算法,也曾经是 TLS 可采用的算法之一
RC4分别为两部分
初始化代码
1 | void rc4_init(unsigned char *s, unsigned char *key, unsigned long Len) //初始化函数 |
加解密代码(对称加密)
1 | void rc4_crypt(unsigned char *s, unsigned char *Data, unsigned long Len) //加解密 |
完整代码
1 | //程序开始 |
MD5
MD5 消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个 128 位(16 字节)的散列值(hash value),用于确保信息传输完整一致。MD5 由美国密码学家罗纳德 · 李维斯特(Ronald Linn Rivest)设计,于 1992 年公开,用以取代 MD4 算法。这套算法的程序在 RFC 1321 中被加以规范。
https://www.bilibili.com/video/BV1u44y1z7t1?spm_id_from=333.337.search-card.all.click
其鲜明的特征是:
h0 = 0x67452301; h1 = 0xefcdab89; h2 = 0x98badcfe; h3 = 0x10325476;