一.加解密算法
是对源数据 进行运算产生加密数据,以及反向过程,对加密数据反算出 源数据。
加解密算法 和 hash算法 不同点有:
1.加解密算法 是可逆的,hash算法是不可逆的。
2. hash算法可以对很大的数据产生比较小的哈希值,而加密算法源数据hash算法可以对很大的数据产生比较小的哈希值,而加密算法源数据很大,加密后的数据也会很大
加解密算法 可以分为 对称加密 以及 不对称加密
对称加密 指 加密和解密 使用相同的 密钥 。
而 不对称加密 指 加密和解密 使用不同的 密钥,通常是一对密钥,称之为公钥(用来加密)和私钥(用来解密)。
比较常见的 对称加密算法有: AES, RC4, DES, 3DES, IDEA 等。
其中安全等级较高的是 AES。
而最知名的 不对称加密系统 就是 RSA (Rivest–Shamir–Adleman) 。
二.哈希算法
哈希函数(hash function)可以把 任意长度的数据(字节串)计算出一个为固定长度的结果数据。
我们习惯把 要计算 的数据称之为 源数据, 计算后的结果数据称之为 哈希值(hash value)或者 摘要(digests)。
有好几种哈希函数,对应不同的算法, 常见有的 MD5, SHA1, SHA224, SHA256, SHA384, SHA512
哈希计算的特点是:
相同的源数据, 采用相同的哈希算法, 计算出来的哈希值 一定相同。不管源数据 有多大,相同的哈希算法,计算出来的哈希值长度 都是一样长的。
算法 计算结果长度
MD5 16字节
SHA1 20字节
SHA224 28字节
SHA256 32字节
SHA384 48字节
SHA512 64字节
算法不可逆:也就是说,不能通过 哈希值 反过来计算出 源数据。 所以哈希和我们常说的加密解密不同。
不同的源数据 使用同样的哈希算法,可能会产生相同的 哈希值,这被称之为碰撞率(collision rate)
各种哈希算法,计算的结果长度越长,碰撞率越低,通常耗费的计算时长也越长。即使是 MD5 算法, 碰撞率也非常小,小到几乎可以忽略不计。大约是 1.47*10的负29次方。
、