MD5、sha1、HMAC算法、NTLM等相似加密类型

1、MD5——示例21232F297A57A5A743894A0E4A801FC3

一般MD5值是32位由数字“0-9”和字母“a-f”所组成的字符串,如图。如果出现这个范围以外的字符说明这可能是个错误的md5值,就没必要再拿去解密了。16位值是取的是8~24位。

md5的三个特征:

  1. 确定性:一个原始数据的MD5值是唯一的,同一个原始数据不可能会计算出多个不同的MD5值。
  2. 碰撞性:原始数据与其MD5值并不是一一对应的,有可能多个原始数据计算出来的MD5值是一样的,这就是碰撞。
  3. 不可逆:也就是说如果告诉你一个MD5值,你是无法通过它还原出它的原始数据的,这不是你的技术不够牛,这是由它的算法所决定的。因为根据第4点,一个给定的MD5值是可能对应多个原始数据的,并且理论上讲是可以对应无限多个原始数据,所有无法确定到底是由哪个原始数据产生的。

2、sha1——示例d033e22ae348aeb5660fc2140aec35850c4da997

这种加密的密文特征跟MD5差不多,只不过位数是40

3、HMAC算法——示例5b696ae7da9442ead7adc24d03cedb65

HMAC (Hash-based Message Authentication Code) 常用于接口签名验证,这种算法就是在前两种加密的基础上引入了秘钥,而秘钥又只有传输双方才知道,所以基本上是破解不了的

3、NTLM——示例209c6174da490caeb422f3fa5a7ae634

这种加密是Windows的哈希密码,是 Windows NT 早期版本的标准安全协议。与它相同的还有Domain Cached Credentials(域哈希)。

相似加密类型

#

算法

长度

1

md5

32/16

2

sha1

40

3

sha256

64

4

sha512

128

5

adler32

8

6

crc32

8

7

crc32b

8

8

fnv132

8

9

fnv164

16

10

fnv1a32

8

11

fnv1a64

16

12

gost

64

13

gost-crypto

64

14

haval128,3

32

15

haval128,4

32

16

haval128,5

32

17

haval160,3

40

18

haval160,4

40

19

haval160,5

40

20

haval192,3

48

21

haval192,4

48

22

haval192,5

48

23

haval224,3

56

24

haval224,4

56

25

haval224,5

56

26

haval256,3

64

27

haval256,4

64

28

haval256,5

64

29

joaat

8

30

md2

32

31

md4

32

32

ripemd128

32

33

ripemd160

40

34

ripemd256

64

35

ripemd320

80

36

sha224

56

37

sha3-224

56

38

sha3-256

64

39

sha3-384

96

40

sha3-512

128

41

sha384

96

42

sha512/224

56

43

sha512/256

64

44

snefru

64

45

snefru256

64

46

tiger128,3

32

47

tiger128,4

32

48

tiger160,3

40

49

tiger160,4

40

50

tiger192,3

48

51

tiger192,4

48

52

whirlpool

128

53

mysql

老MYSQL数据库用的,16位,且第1位和第7位必须为0-8

54

mysql5

40

55

NTLM

32

56

Domain Cached Credentials

32

常用解密网站:

  • www.cmd5.com(带批量解密工具)
  • www.somd5.com
  • cmd5.la
  • pmd5.com
  • www.ttmd5.com(带批量解密工具)

Base64、Base58、Base32、Base16、Base85、Base100等相似加密类型

1、Base64——示例YWRtaW4tcm9vdA==

一般情况下密文尾部都会有两个等号,明文很少的时候则没有

Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用‘=’,因此编码后输出的文本末尾可能会出现1或2个‘=’,如图。

为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。

Base64编码表

码值

字符

码值

字符

码值

字符

码值

字符

码值

字符

码值

字符

码值

字符

码值

字符

0

A

8

I

16

Q

24

Y

32

g

40

o

48

w

56

4

1

B

9

J

17

R

25

Z

33

h

41

p

49

x

57

5

2

C

10

K

18

S

26

a

34

i

42

q

50

y

58

6

3

D

11

L

19

T

27

b

35

j

43

r

51

z

59

7

4

E

12

M

20

U

28

c

36

k

44

s

52

0

60

8

5

F

13

N

21

V

29

d

37

l

45

t

53

1

61

9

6

G

14

O

22

W

30

e

38

m

46

u

54

2

62

+

7

H

15

P

23

X

31

f

39

n

47

v

55

3

63

/

Base64使用注意问题

一、Base64和URL传参问题

标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

为解决此问题,可采用一种用于URL的改进Base64编码,它在末尾填充’='号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。

二、Base64和URL传参问题改善

另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。

此外还有一些变种,它们将“+/”改为“-”或“.”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。

三、Base64转换后比原有的字符串长1/3

Base64要求把每三个8Bit的字节转换为四个6Bit的字节(38 = 46 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。

四、Base64转换总结

Base64转换,最好是不要用在加密上,尤其是参数加密,很容易出问题。

2、Base58——示例6tmHCZvhgfNjQu

它最大的特点是没有等号

Base58是用于比特币(Bitcoin)中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。

相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+“和”/"符号。

比特币的Base58字母表:

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

简单的说:Base58一种编码方式,跟十进制,十六进制一样,不过更短更省空间。

Base58的原理是什么?

二进制:0和1

十进制:1到10

十六进制:十进制的基础上加上了A-F 六个字母

Base58可以理解为一种58进制。

Base58包含了阿拉伯数字、小写英文字母,大写英文字母。

但是去掉了一些容易混淆的数字和字母:0(数字0)、O(o的大写字母)、l( L的小写字母)、I(i的大写字母)

3、Base32——示例GEZDGNBVGY3TQOJQGE======

他的特点是明文超过十个后面就会有很多等号

Base32使用了ASCII编码中可打印的32个字符(大写字母AZ和数字27)对任意字节数据进行编码.Base32将串起来的二进制数据按照5个二进制位分为一组,由于传输数据的单位是字节(即8个二进制位).所以分割之前的二进制位数是40的倍数(40是5和8的最小公倍数).如果不足40位,则在编码后数据补充"=",一个"="相当于一个组(5个二进制位),编码后的数据是原先的8/5倍. Base32编码表

符号

符号

符号

符号

0

A

8

I

16

Q

24

Y

1

B

9

J

17

R

25

Z

2

C

10

K

18

S

26

2

3

D

11

L

19

T

27

3

4

E

12

M

20

U

28

4

5

F

13

N

21

V

29

5

6

G

14

O

22

W

30

6

7

H

15

P

23

X

31

7

填充

=

Base32将任意字符串按照字节进行切分,并将每个字节对应的二进制值(不足8比特高位补0)串联起来,按照5比特一组进行切分,并将每组二进制值转换成十进制来对应32个可打印字符中的一个。

由于数据的二进制传输是按照8比特一组进行(即一个字节),因此Base32按5比特切分的二进制数据必须是40比特的倍数(5和8的最小公倍数)。例如输入单字节字符“%”,它对应的二进制值是“100101”,前面补两个0变成“00100101”(二进制值不足8比特的都要在高位加0直到8比特),从左侧开始按照5比特切分成两组:“00100”和“101”,后一组不足5比特,则在末尾填充0直到5比特,变成“00100”和“10100”,这两组二进制数分别转换成十进制数,通过上述表格即可找到其对应的可打印字符“E”和“U”,但是这里只用到两组共10比特,还差30比特达到40比特,按照5比特一组还需6组,则在末尾填充6个“=”。填充“=”符号的作用是方便一些程序的标准化运行,大多数情况下不添加也无关紧要,而且,在URL中使用时必须去掉“=”符号。

与Base64相比,Base32具有许多优点:

  • 适合不区分大小写的文件系统,更利于人类口语交流或记忆。
  • 结果可以用作文件名,因为它不包含路径分隔符 “/”等符号。
  • 排除了视觉上容易混淆的字符,因此可以准确的人工录入。(例如,RFC4648符号集忽略了数字“1”、“8”和“0”,因为它们可能与字母“I”,“B”和“O”混淆)。
  • 排除填充符号“=”的结果可以包含在URL中,而不编码任何字符。

Base32也比Base16有优势:

  • Base32比Base16占用的空间更小。(1000比特数据Base32需要200个字符,而Base16则为250个字符)

Base32的缺点:

  • Base32比Base64多占用大约20%的空间。因为Base32使用8个ASCII字符去编码原数据中的5个字节数据,而Base64是使用4个ASCII字符去编码原数据中的3个字节数据。

4、Base16——示例61646D696E

它的特点是没有等号并且数字要多于字母

Base16编码的方式:

1.将数据(根据ASCII编码,UTF-8编码等)转成对应的二进制数,不足8比特位高位补0。然后将所有的二进制全部串起来,4个二进制位为一组,转化成对应十进制数。

2.根据十进制数值找到Base16编码表里面对应的字符。Base16是4个比特位表示一个字符,所以原始是1个字节(8个比特位)刚好可以分成两组,也就是说原先如果使用ASCII编码后的一个字符,现在转化成两个字符。数据量是原先的2倍。

编码

编码

0

0

8

8

1

1

9

9

2

2

10

A

3

3

11

B

4

4

12

C

5

5

13

D

6

6

14

E

7

7

15

F

Base16编码是一个标准的十六进制字符串(注意是字符串而不是数值),更易被人类和计算机使用,因为它并不包含任何控制字符,以及Base64和Base32中的“=”符号。

5、Base85——示例@:X4hDWe0rkE(G[OdP4CT]N#

特点是奇怪的字符比较多,但是很难出现等号

6、Base100——示例

30余种加密编码类型的密文特征分析建议收藏相关推荐

  1. 30余种加密编码类型的密文特征分析

    声明:本文只收集了30余种加密编码类型,关于他们的介绍来源于网络,重点讲的是他们的密文特征,还有很多类型没有讲到,后续等我研究明白了再发,转载请注明来源,感谢支持 MD5.sha1.HMAC算法.NT ...

  2. 30余种加密编码类型的密文特征分析,资深Python开发带你入门Framework

    []( )常用解密网站: [www.cmd5.com]( )(带批量解密工具) [www.somd5.com]( ) [cmd5.la]( ) [pmd5.com]( ) [www.ttmd5.com ...

  3. 第四天:基础入门-30余种加密编码进制Web数据库系统代码参数值

    1.存储密码加密-Web&数据库&系统 md5:MD5值是32或16位位由数字"0-9"和字母"a-f"所组成的字符串 解密:枚举(碰撞) 其密 ...

  4. 【小迪安全】Day04基础入门-30 余种加密编码进制Web数据库系统代码参数值

    一.知识点 1.1存储密码加密-Web&数据库&系统 1.2传输数据编码-各类组合传输参数值 1.3代码特性加密-JS&PHP&NET&JAVA 1.4数据显示 ...

  5. 箱线图怎么看_K线的48种不同类型全解(建议收藏),教你怎么看懂K线图

    ID:K线助手 来源:公众号 链接:K线的48种不同类型全解(建议收藏),教你怎么看懂K线图 中国起步较晚,1990年我国股市开市时直接起用了K线,但对K线的研究.使用一直局限于日本人的研究成果,主要 ...

  6. Android支持视频编码,影音全能 完美支持十余种视频编码_华为 Ascend P6_手机Android频道-中关村在线...

    拍照之后又到了用户们最关注的多媒体播放测试环节了.这年头四核设备播放720p视频早已不在话下,所以今天我们仍旧选择15段1080p视频进行测试.由于视频编码及封装格式不同,在我们以往评测的手机中,总有 ...

  7. python 散点图聚类,【聚类算法】10种Python聚类算法完整操作示例(建议收藏

    点击上方,选择星标,每天给你送干货! 来源:海豚数据科学实验室著作权归作者所有,本文仅作学术分享,若侵权,请联系后台删文处理 聚类或聚类分析是无监督学习问题.它通常被用作数据分析技术,用于发现数据中的 ...

  8. charles 代理手机连不上网_手机连不上网?四种方法教你如何解决,建议收藏以备不时之需...

    随着科技的进步,现在家家户户大街小巷都是Wifi信号,所以无线基地已经成为生活中不可缺少的一环,但也因为这样无线干扰的情况,常常听到有人抱怨怎么无线又突然断线啦?我的wifi又连不上了?为什么无线上网 ...

  9. 连不上网_手机连不上网?四种方法教你如何解决,建议收藏以备不时之需

    随着科技的进步,现在家家户户大街小巷都是Wifi信号,所以无线基地已经成为生活中不可缺少的一环,但也因为这样无线干扰的情况,常常听到有人抱怨怎么无线又突然断线啦?我的wifi又连不上了?为什么无线上网 ...

最新文章

  1. Java项目:化妆品商城系统(java+Springboot+ssm+mysql+jsp+maven)
  2. 《预训练周刊》第35期:零样本规划器的语言模型:为智能体提取可操作的知识、LaMDA:对话应用的语言模型...
  3. re-for-50-plz-50 寒假逆向生涯(6/100)
  4. 理解严格模式下JavaScript的this指向的变化
  5. m.2接口和nvme区别_原来M.2、SATA接口的固态盘有这样的差别,难怪大家都选“它”!...
  6. matlab常用函数辨析
  7. 用一个程序生成另一个程序_还有另一个报告生成器?
  8. 关于es6的const跟vuex里的getter
  9. spark的ContextCleaner清理
  10. day059-60 ajax初识 登录认证练习 form装饰器, form和ajax上传文件 contentType
  11. Confluence wiki上传文件时报“不能上传文件至Confluence中,服务器可能已失效”
  12. 从头实现linux操作系统_从头开始实现您的第一个人工神经元
  13. 【Qt5】评标专家库随机选5人小软件
  14. 《Netty实战》总结
  15. ios ipa文件分析
  16. C/C++存储区域划分(栈区,堆区,全局区,代码区)
  17. 70万行代码、历时20年,一名开发人员写出的史诗般的计算机程序
  18. 银行卡资费转帐汇款取款_收费标准参考_中行_建行_工行_农行_招行_兴业等
  19. 幻灯片自动播放的实现
  20. 模糊数学 5、模糊综合评判

热门文章

  1. 出现“新事务不能登记到指定的事务处理器中”异常的处理
  2. linux说明管道的作用,Linux管道及重定向的用途是什么
  3. 《程序员养成记》第7集 珍爱生命远离编程
  4. Windows调整桌面鼠标右键文件顺序
  5. 皮书数据库没有权限怎么在线阅读下载文献
  6. 无烟日遇上儿童节,为了孩子请“熄”烟
  7. hawq oracle,【HAWQ】oracle兼容函数orafunc
  8. CSDN Blog欢迎推荐好的皮肤
  9. Java面向对象系统理解
  10. Matlab Appdesigner界面设计基本用法