Base 系列编码

Base64 是我们最常见的编码,除此之外,其实还有 Base16、Base32、Base58、Base85、Base100 等,他们之间最明显的区别就是使用了不同数量的可打印字符对任意字节数据进行编码,比如 Base64 使用了 64 个可打印字符(A-Z、a-z、0-9、+、/),Base16 使用了 16 个可打印字符(A-F、0-9),这里主要讲怎么快速识别,其具体原理可自行百度,Base 系列主要特征如下:

Base16:结尾没有等号,数字要多于字母;

Base32:字母要多于数字,明文数量超过 10 个,结尾可能会有很多等号;

Base58:结尾没有等号,字母要多于数字;

Base64:一般情况下结尾都会有 1 个或者 2 个等号,明文很少的时候可能没有;

Base85:等号一般出现在字符串中间,含有一些奇怪的字符;

Base100:密文由 Emoji 表情组成。
示例:

编码类型 示例一 示例二
明文 01234567890 administrators
Base16 3031323334353637383930 61646D696E6973747261746F7273
Base32 GAYTEMZUGU3DOOBZGA====== MFSG22LONFZXI4TBORXXE4Y=
Base58 cX8j8pvGzppMKVb BNF5dFLUTN5XwM1yLoF
Base64 MDEyMzQ1Njc4OTA= YWRtaW5pc3RyYXRvcnM=
Base85 0JP==1c70M3&rY @:X4hDJ=06Eaa’.EcV
Base100 🐧🐨🐩🐪🐫🐬🐭🐮🐯🐰🐧 👘👛👤👠👥👠👪👫👩👘👫👦👩👪

Unicode 编码

Unicode 又称为统一码、万国码、单一码,是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。其主要特征如下:

以 \u、&# 或 &#x 开头,后面是数字加字母组合

PS:\u 开头和 &#x 开头是一样的,都是 16 进制 Unicode 字符的不同写法,&# 则是 Unicode 字符 10 进制的写法,此外,&# 和 &#x 开头的,也称为 HTML 字符实体转换,字符实体是用一个编号写入 HTML 代码中来代替一个字符,在 HTML 中,某些字符是预留的,如果希望正确地显示预留字符,就必须在 HTML 源代码中使用字符实体。

示例:

编码类型 示例一 示例二
明文 12345 admin
Unicode \u0031\u0032\u0033\u0034\u0035 \u0061\u0064\u006d\u0069\u006e

MD5

MD5 实质是一种消息摘要算法,一个数据的 MD5 值是唯一的,同一个数据不可能计算出多个不同的 MD5 值,但是,不同数据计算出来的 MD5 值是有可能一样的,知道一个 MD5 值,理论上是无法还原出它的原始数据的,MD5 是最容易辨别的,主要特征如下:

密文一般为 16 位或者 32 位,其中 16 位是取的 32 位第 9~25 位的值;

组成方式为字母(a-f)和数字(0-9)混合,字母可以全部是大写或者小写。

除了通过密文特征来判断以外,我们还可以搜索源代码,标准 MD5 的源码里是包含了一些特定的值的,没有这些特定值,就无法实现 MD5:

0123456789ABCDEF、0123456789abcdef

1732584193、-271733879、-1732584194、271733878

PS:某些特殊情况下,密文的长度也有可能不止 16 位或者 32 位,有可能是在官方算法上有一些魔改,通常也是在 16 位的基础上,左右填充了一些随机字符串。
示例:

编码类型 示例一 示例二
明文 123456 admin
MD5
(16 位小写) 49ba59abbe56e057 7a57a5a743894a0e
MD5
(16 位大写) 49BA59ABBE56E057 7A57A5A743894A0E
MD5
(32 位小写) e10adc3949ba59abbe56e057f20f883e 21232f297a57a5a743894a0e4a801fc3
MD5
(32 位大写) E10ADC3949BA59ABBE56E057F20F883E 21232F297A57A5A743894A0E4A801FC3

SHA 系列

SHA 是比 MD5 更安全一点的摘要算法,SHA 通常指 SHA 家族算法,分别是 SHA-1、SHA-2、SHA-3,其中 SHA-2 是 SHA-224、SHA-256、SHA-384、SHA-512 的并称,SHA-3 是 SHA3-224、SHA3-256、SHA3-384、SHA3-512、SHAKE128、SHAKE256 的并称,其名字的后缀的数字就代表了结果的大小(bit),注意,SHAKE 算法结果的大小并不是固定的,其他算法特征如下:

SHA-1:字母(a-f)和数字(0-9)混合,固定位数 40 位;

SHA-224/SHA3-224:字母(a-f)和数字(0-9)混合,固定位数 56 位;

SHA-256/SHA3-256:字母(a-f)和数字(0-9)混合,固定位数 64 位;

SHA-384/SHA3-384:字母(a-f)和数字(0-9)混合,固定位数 96 位;

SHA-512/SHA3-512:字母(a-f)和数字(0-9)混合,固定位数 128 位。

示例:

编码类型 示例
明文 123456
SHA-1 7c4a8d09ca3762af61e59520943dc26494f8941b
SHA-256 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
SHA3-256 c888c9ce9e098d5864d3ded6ebcc140a12142263bace3a23a36f9905f12bd64a

HMAC 系列

HMAC 这种算法就是在 MD5、SHA 两种加密的基础上引入了秘钥,其密文也和 MD5、SHA 类似,密文的长度和使用的 MD5、SHA 算法对应密文的长度是一样的。特征如下:

HMAC-MD5:字母(a-f)和数字(0-9)混合,位数一般为 32 位;

HMAC-SHA-1:字母(a-f)和数字(0-9)混合,固定位数 40 位;

HMAC-SHA-224 / HMAC-SHA3-224:字母(a-f)和数字(0-9)混合,固定位数 56 位;

HMAC-SHA-256 / HMAC-SHA3-256:字母(a-f)和数字(0-9)混合,固定位数 64 位;

HMAC-SHA-384 / HMAC-SHA3-384:字母(a-f)和数字(0-9)混合,固定位数 96 位;

HMAC-SHA-512 / HMAC-SHA3-512:字母(a-f)和数字(0-9)混合,固定位数 128 位。

HMAC 和 SHA、MD5 的密文都很像,当无法确定是否为 HMAC 时,可以通过其名称搜索到加密方法,如果传入了密钥 key,说明就是 HMAC,当然你也可以直接当做是 SHA 或 MD5 来解,解密失败时就得考虑是否有密钥,是否为 HMAC 了,在 JS 中,通常一个 HMAC 加密方法是这样写的:

function HmacSHA1Encrypt(word, key) {
    return CryptoJS.HmacSHA1(word, key).toString();
}

示例(密钥 123456abcde):

编码类型 示例
明文 123456
HMAC-MD5 432bb95bb00005ddce4a1c757488ed95
HMAC-SHA-1 37a04076b7736c44460d330ee0d00014428b175e
HMAC-SHA-256 50cb1345366df11140fb91b43caaf69627e3f5529705ddf6b0d0cae67986e585
HMAC-SHA3-256 b808ed9f66436e89fba527a01d1d6044318fea8599d9f39bfb6bec4843964bf3

RSA

RSA 加密算法是一种非对称加密算法,通过公钥加密结果,必须私钥解密。同样私钥加密结果,公钥可以解密,应用非常广泛,在网站中通常使用 JSEncrypt 库来实现,其最大的特征就是有一个设置公钥的过程,我们可以通过以下方法来快速初步判断是否为 RSA 算法:

搜索关键词 new JSEncrypt(),JSEncrypt 等,一般会使用 JSEncrypt 库,会有 new 一个实例对象的操作;

搜索关键词 setPublicKey、setKey、setPrivateKey、getPublicKey 等,一般实现的代码里都含有设置密钥的过程。

RSA 的私钥、公钥、明文、密文长度也有一定对应关系,也可以从这方面初步判断:

私钥长度(Base64) 公钥长度(Base64) 明文长度 密文长度
428 128 1~53 88
812 216 1~117 172
1588 392 1~245 344
文章转载:https://blog.csdn.net/Dome_/article/details/123333167#:~:text=识别密文加密方式 1 编码 :Base 系列、Unicode、Escape、URL、Hex; 2 算法 :MD5、SHA,3 混淆 :Obfuscator、JJEncode、AAEncode、JSFuck、Jother、Brainfuck、Ook!、Trivial brainfuck substitution; 4 其他 :恺撒密码、栅栏密码、猪圈密码、摩斯密码、培根密码、维吉尼亚密码、与佛论禅、当铺密码。
更多格式可以查看:
https://cloud.tencent.com/developer/article/1748394