一:数字签名简介
什么是数字签名?带有密钥(公钥,私钥)的消息摘要算法,用于验 证数据完整性,认证数据来源,以及抗否定。通俗来说就是证实某个消息或 者文件 是本人发出/认同的,这个的话用于的面就比较多了。好比电子合同, 银行签约,电子受权等等。因此他的安全性是咱们必需要考虑的。数字签名 中经常使用的签名算法有RSA、DSA、ECDSA等。算法
二:数字签名的基本过程
基本过程以下:安全
(1)发送方生成非对称加密算法的公钥和私钥对,并公布其公钥和签名算法(例如sha256WithRSAEncryption);eclipse
(2)发送方对发送的消息先计算其数字摘要,而后使用私钥对摘要进行加密,生成数字签名;ide
(3)接收方在接收到声称来自XXX的消息时,先去查询XXX的公布的公钥和签名算法;编码
(4)接收方使用公钥对数字签名解密并与计算出的数字摘要进行比对,若是比对一致,那么消息来自于XXX而且未被篡改。加密
上述过程的安全前提基于如下两点:spa
①发送方的签名算法没法被破解,且私钥未发生泄露code
②接收方查询的公钥以及签名算法属实blog
三:在eclipse中分析DSA签名算法
(1)在主类Mainactivity中分析ip
分析这几个自定义方法:
-
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
小结
一、介绍数字签名系列相关的知识以及实现原理。
二、在eclipse中分析了DSA签名算法的代码。