一、概述
1、数字签名算法可以看做是一个带有密钥的消息摘要算法,并且这个密钥包括了公钥和私钥。他是非对称加密算法和消息摘要算法的结合体
2、数字签名算法是公钥基础设施(PKI),以及许多网络安全机制的基础
3、数字签名算法有抗否认的作用
4、遵循“私钥签名,公钥验证”规则
5、常见的数字签名算法有RSA/DSA/ECDSA
6、java6支持实现了DSA算法、部分RSA算法需要bouncycastle支持,最牛的ECDSA算法(微软用来做操作系统序列号的那个)完全需要Bouncycastle支持
二、模型分析
1、甲方构造密钥对(公钥+私钥),公布公钥给乙方
2、甲方使用私钥对数据进行签名,然后将“签名+数据” 发送给乙方
3、乙方使用公钥+数字签名 验证数据
三、代码分析
四、总结
1、签名算法对非对称加密算法RSA的公钥私钥的使用是核心,配合信息摘要算法完成签名操作。其实签名看起来就是信息的摘要而已
2、密钥处理方面和非对称加密算法无异,只是将加密、解密换成签名、验证
3、RSA的数字签名算法的密钥实现与RSA加密算法一致。所以签名算法可以分为MD系列和SHA系列