数字签名(又称公钥数字签名)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。
数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。
数字签名算法:
1、数字签名算法可以看做是一个带有密钥的消息摘要算法,并且这个密钥包括了公钥和私钥。他是非对称加密算法和消息摘要算法的结合体
2、数字签名算法是公钥基础设施(PKI),以及许多网络安全机制的基础
3、数字签名算法有抗否认的作用
4、遵循“私钥签名,公钥验证”规则
5、常见的数字签名算法有RSA/DSA/ECDSA
6、java6支持实现了DSA算法、部分RSA算法需要bouncycastle支持,最牛的ECDSA算法(微软用来做操作系统序列号的那个)完全需要Bouncycastle支持
二、模型分析
1、甲方构造密钥对(公钥+私钥),公布公钥给乙方
2、甲方使用私钥对数据进行签名,然后将“签名+数据” 发送给乙方
3、乙方使用公钥+数字签名 验证数据
为了保证数据来源的安全性,可以使用数字证书,在接收方进行验证之前,可以先对数字证书进行验证,然后再验证数字签名。最后比对解密以后的数据摘要和发送方给的摘要是否一致,从而确定该消息的来源。
原文:https://blog.csdn.net/kongqz/article/details/6305548