原文阅读:https://www.infinisign.com/fa...
数字签名是一个带有密钥的消息摘要算法,这个密钥包括了公钥和私钥,用于验证数据完整性、认证数据来源和抗否认,遵循OSI参考模型、私钥签名和公钥验证。也是非对称加密算法和消息摘要算法的结合体,常见的数字签名算法主要有RSA、DSA、ECDSA三种,本文对数字签名算法进行详细介绍。
Hash又译散列、摘要等名,本文统一称Hash。
1. RSA数字签名算法
RSA是目前计算机密码学中最经典算法,也是目前为止使用最广泛的数字签名算法,RSA数字签名算法的密钥实现与RSA的加密算法是一样的,算法的名称都叫RSA。密钥的产生和转换都是一样的,包括在售的所有SSL数字证书、代码签名证书、文档签名以及邮件签名大多都采用RSA算法进行加密。
RSA数字签名算法主要包括MD和SHA两种算法,例如我们熟知的MD5和SHA-256即是这两种算法中的一类,具体如下表格分布
算法 | 输出Hash长度 | 中继Hash长度 | 数据区块长度 | 最大输入长度 | 循环次数 | 碰撞攻击 | 性能示例(MiB/s) | |
---|---|---|---|---|---|---|---|---|
MD5 | 128 | 128 | 512 | 无限[4] | 64 | <64 (已碰撞) | 335 | |
SHA-0 | 160 | 160 | 512 | 264 − 1 | 80 | <80 (已碰撞) | - | |
SHA-1 | 160 | 160 | 512 | 264 − 1 | 80 | <80 (已碰撞) | 192 | |
SHA-2 | SHA-224 SHA-256 |
224 256 |
256 | 512 | 264 − 1 | 64 | 112 128 |
139 |