- character-to-binary 编码:ASCII、UTF-8、GB2312(区分字符集:Unicode)
- binary-to-text 编码(虽然经常用作text-to-text):base64、base32、ascii85
MD5, SHA-1, and SHA-256
DES、3DES、AES
RSA、DSA、ECC
目的:证明信息由签名者发出
- 发送方步骤
- 对原数据做哈希
- 对哈希后结果用私钥加密生成签名
- 将原数据和签名发送给接收方
- 接收方步骤
- 用发送方公钥对签名解密得到哈希值。若解密成功说明消息确实来源于发送方。(不可抵赖性)
- 对原数据做哈希,与第一步得到的哈希值作比较。若相同,则说明原数据未被篡改。(完整性)
- 威胁模型:攻击者可以篡改接收方保存的发送方公钥,以冒充发送方向接收方通信
- 解决方案:让一个可信的第三方保存发送方的公钥
- 背景:如果每次对称加密的模式(函数、密钥)都相同,那么可以通过记录输入和输出的映射破解对称加密
- 设置一个递增随机数,在加密时将该数作为加密函数的一部分