前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java小工匠聊密码学】--数字签名-概述

【Java小工匠聊密码学】--数字签名-概述

作者头像
Java小工匠
发布2018-08-10 11:56:26
2900
发布2018-08-10 11:56:26
举报
文章被收录于专栏:小工匠技术圈

1、数据签名场景模拟

第一回合:消息摘要 张三和李四是生意合作伙伴,张三发现李四发送的的电子文档,有很多东西不完整,于是两人商量,需要再设计一种机制,验证“李四”发过来的消息是完整的,于是两个人约定,对数据进行消息摘要,提取关键信息,一并发送。“张三”在接收到消息的时候,也进行消息摘要,与“李四”发过来的关键性信息进行对比,验证数据完整性。

image.png 第二回合:消息认证码 一天张三收到了一封诡异的转账邮件,内容啥的都是完整的,可打电话问李四,李四说没发过,于是他们自己被黑客攻击了。消息摘要可以验证“李四”发送消息的完整性,但是无法解决黑客伪造李四消息,因此“张三”和“李四”商量,两个人约定一个密钥,记录在自己的大脑中。发现消息时用密钥和消息内容一起进行消息摘要,这样就可以解决伪装消息问题。

image.png *第三回合:数字签名 最近两个人出现小矛盾,李四不承认“一笔转账”,说他没有发过这样的消息,李四还攻击到,密钥张三你也知道,你也可以生成同样的信息,为了合作大局,张三只好自认倒霉。于是张三想有没有一种技术,两个人可以使用不同的密钥,李四需要用自己的私钥进行签名,张三无法生成消息,张三可以使用李四的公钥进行验证, 这样可以解决完整性、伪造问题、否认问题,这种技术就是数字签名。

image.png

2 什么是数字签名

数字签名是一种将现实世界中的盖章、签字的功能,在计算机世界中进行实现的技术。使用数字签名可以识别篡改、伪造、防止抵赖否则。 主要三个要点: (1) 防止消息篡改,解决完整性问题 (2) 防止消息伪造,解决鉴权问题 (3) 防止抵赖否认,解决否认问题 数字签名也是一种可以证明我就是我的技术

3、签名的生成与验证

3.1 生成签名

一般来说,不直接对消息进行签名,而是对消息的哈希值进行签名。 生成步骤: (1)对消息进行哈希计算,得到哈希值 (2)利用私钥对哈希值进行加密,生成签名 (3)将签名附加在消息后面,一起发送过去

image.png

3.2 验证签名

(1)收到消息后,提取消息中的签名 (2)用公钥对签名进行解密,得到哈希值1。 (3)对消息中的正文进行哈希计算,得到哈希值2。 (4)比较哈希值1和哈希值2,如果相同,则验证成功。

image.png

4、常见的数字签名

(1) RSA 数字签名 (2) DES数字签名 (3) ECDSA数字签名


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小工匠技术圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、数据签名场景模拟
  • 2 什么是数字签名
  • 3、签名的生成与验证
    • 3.1 生成签名
      • 3.2 验证签名
      • 4、常见的数字签名
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档