MD5是message-digest algorithm 5(信息-摘要算法)的缩写,被广泛用于加密和解密技术上,它可以说是文件的“数字指纹”。
任何一个文件,都有且只有一个独一无二的MD5信息值,并且如果这个文件被修改过,它的MD5值也将随之改变。因此,我们可以通过对比同一文件的MD5值,来校验这个文件是否被“篡改”过。
MD5是一种 Hash 算法,作用是为了信息安全,再具体点,MD5 值就是一串 128 bit 的数据。
从MD5不可逆的特点来看,不是用来加密的。因为加密完成后无法进行解密操作。
但是有时用于加密密码并存于数据库,当客户于客户端输入密码时,进行MD5加密与数据库中的密码进行对比,一致则正确。
简述下RSA加解密过程:
假设A、B双方均拥有一对公私钥(PUB_A
、PRI_A
、PUB_B
、PRI_B
)。
A向B发送Message的整个签名和加密的过程如下:
- A先使用HASH对Message生成一个固定长度的信息摘要
Message_hash_A
- A使用A的私钥
PRI_A
对Message_hash_A
进行签名得到Message_sign
(这里为什么不直接对Message进行签名,而要对Message_hash_A
进行签名呢?因为Message的长度可能很长,而Message_hash_A
的长度则是固定的,这样性能更高,格式也固定,况且hash的结果一般不会出现重复的可能) - A接着使用B的公钥
PUB_B
对信息Message
和信息Message_sign
进行加密得到Message_RSA
,这时A将Message_RSA
发送给B。
当B接收到A的信息Message_RSA
后,获取Message
的步骤如下:
- B用自己的私钥
PRI_B
解密得到明文:Message
和Message_sign
; - 然后B使用A的公钥
PUB_A
解Message_sign
得到Message_hash_A
;同时,B再对Message
使用与A相同的HASH得到Message_hash_B
; - 如果
Message_hash_A
与Message_hash_B
相同,则说明Message
没有被篡改过。