Appearance
常见概念
非对称加密
非对称加密算法采用了两个密钥:公开密钥(publicKey)和私有密钥(privateKey)。公钥与私钥是成对使用的,如果用公钥对数据进行加密,只有用对应的私钥才能解密;同样,使用私钥对数据进行加密,只有用对应的公钥才能解密。
哈希算法
哈希算法是一种单向散列函数(one-way hash function),它接收任意长度的输入,输出一个固定长度的“哈希值”或“摘要”。
| 特性 | 说明 |
|---|---|
| 定长输出 | 不管输入数据多长,输出长度固定(如 SHA-256 输出为 256 位) |
| 不可逆 | 不能从哈希值反推出原始数据(单向性) |
| 抗碰撞性 | 不易找到两个不同的输入具有相同哈希值 |
| 雪崩效应 | 输入微小变化会导致哈希值完全不同 |
| 快速计算 | 算法效率高,可快速生成哈希值 |
数字签名
秘钥对的拥有者采用私钥对原文进行加密,然后公布密文,原文和公钥,任何人都可以使用公钥解密密文,然后核对原文和密文是否一致。
原理
(sk,pk):= generates(keysize) // 生成密钥对
signature := encrypt(sk, hash(message)) // 用私钥对消息的哈希值进行加密,生成数字签名
isValid := isEqual(decrypt(pk, signature),hash(message)) // 用公钥解密签名,得到的是之前私钥加密过的哈希值,与原文哈希值进行比对