首页
社区
课程
招聘
[分享]常见加密算法-数字签名
发表于: 2020-11-17 17:28 3456

[分享]常见加密算法-数字签名

2020-11-17 17:28
3456

一:数字签名简介

  1. 什么是数字签名?带有密钥(公钥,私钥)的消息摘要算法,用于验证数据完整性,认证数据来源,以及抗否认。通俗来讲就是证明某个消息或者文件是本人发出/认同的,这个的话用于的面就比较多了。比如电子合同,银行签约,电子授权等等。所以他的安全性是我们必须要考虑的。数字签名中常用的签名算法有RSA、DSA、ECDSA等。

二:数字签名的基本过程

基本过程如下:

 

(1)发送方生成非对称加密算法的公钥和私钥对,并公布其公钥和签名算法(例如sha256WithRSAEncryption);

 

(2)发送方对发送的消息先计算其数字摘要,然后使用私钥对摘要进行加密,生成数字签名;

 

(3)接收方在接收到声称来自XXX的消息时,先去查询XXX的公布的公钥和签名算法;

 

(4)接收方使用公钥对数字签名解密并与计算出的数字摘要进行比对,如果比对一致,那么消息来自于XXX并且未被篡改。

 

上述过程的安全前提基于以下两点:

 

①发送方的签名算法无法被破解,且私钥未发生泄露
②接收方查询的公钥以及签名算法属实

三:在eclipse中分析DSA签名算法

(1)在主类Mainactivity中分析

 

分析这几个自定义方法:
getPublicKey(keyMap);//获取公钥
getPrivateKey(keyMap);//获取私钥
be.encode(publicKey));//公钥加密
be.encode(privateKey));//私钥加密
DSA.sign(data.getBytes(), privateKey);//讲私钥进行签名
DSA.verify(data.getBytes(), publicKey, sign)+"");//进行验证

 

图片描述

 

(2)在自定义类DSA中分析

 

几个重要的方法
generateKeyPair:生成密钥对
getPublic获取公钥
getPrivate:获取私钥
X509EncodedKeySpec:根据给定的编码密钥创建一个新的 X509EncodedKeySpec
图片描述
图片描述
图片描述

小结

1、介绍数字签名系列相关的知识以及实现原理。
2、在eclipse中分析了DSA签名算法的代码。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 8059
活跃值: (3759)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
原来还是个系列。
想法很好,我支持你,不过拜托你严谨一点,数字签名是一类应用的总称,并不是某一特定的算法。
还是那句话,先搞清楚概念再发帖好不好?
或许,《常见加密算法》这个系列标题起错了?
2020-11-23 11:29
0
雪    币: 3561
活跃值: (541)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
good
2020-12-8 11:24
0
游客
登录 | 注册 方可回帖
返回
//