java安全(五)带秘钥的消息摘要算法——数字签名

前言

数字签名真没有想象的那么高深,本来不想写的但是为了知识的完整性和连贯性,也为下一节的的数据证书打个前提吧。说白了 数字签名=摘要算法+非对称加密,常用的数字签名算法就是RSA算法。它不是非对称加密算法吗怎么又变成数字签名算法呢,没错他也是数字签名算法,就是一个名字而已别太较真。常用的数字签名算法分为MD和SHA两大系列 如MD5withRSA、SHA1withRSA等等。

原理

一、以张三借李四100块钱为例讲解:
张三向李四借了100元,并打了一张电子欠条。
李四说: 到时你不还了 怎么证明是你打的欠条呀。
张三说:我有一对机构给我下发的非对称加密的秘钥(可有法律效力呀 可以证明是我开的借条) 我把公钥给你 私钥我留着 我用私钥加密签名一段信息放到欠条的后面,到时你用公钥解开了 就可以证明是我开的借条了。
张三:但是你要是把100改成200怎么办,我就得换你200了。
李四:那好办 你先用摘要算法比如MD5 先把“张三借李四100块钱”做摘要处理 再用私钥对摘要签名就好了。我若改了内容 到时已验证签名 就说明这个欠条被改了。
至此,张三终于借到钱了,李四也放心的收下了张三的欠条。

数字签名是先摘要再加密。验证是先解密再摘要。
摘要技术 保证了数据的完整性 非对称加密保证了发布者( 张三)真实性和不可抵赖。
数字签名是个加密的过程,数字签名验证是个解密的过程。

数字签名 广泛应用于 网上银行、电子商务、电子政务、网络通信等 数字证书也用了数字签名呦。

二、参考网络上的DEMO
假如现在 Alice 向 Bob 传送数字信息,为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对传送的信息进行数字加密和签名,其传送过程为:
1.Alice 准备好要传送的数字信息(明文);
2.Alice 对数字信息进行哈希运算,得到一个信息摘要;
3.Alice 用自己的私钥对信息摘要进行加密得到 Alice 的数字签名,并将其附在数字信息上;
4.Alice 随机产生一个加密密钥,并用此密码对要发送的信息进行加密,形成密文;
5.Alice 用 Bob 的公钥对刚才随机产生的加密密钥进行加密,将加密后的 DES 密钥连同密文一起传送给Bob;
6.Bob 收到 Alice 传送来的密文和加密过的 DES 密钥,先用自己的私钥对加密的 DES 密钥进行解密,得到 Alice随机产生的加密密钥;
7.Bob 然后用随机密钥对收到的密文进行解密,得到明文的数字信息,然后将随机密钥抛弃;
8.Bob 用 Alice 的公钥对 Alice 的数字签名进行解密,得到信息摘要;
9.Bob 用相同的哈希算法对收到的明文再进行一次哈希运算,得到一个新的信息摘要;
10.Bob 将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值