RSA算法签名技术Java与C++统一
(加密解密结果一样)
源代码下载地址:http://www.doczj.com/doc/64f44a94a0116c175f0e484d.html/product_down/rsa_c++_java.rar
一、介绍:
RSA 算法的介绍:公钥加密、私钥解密或私钥加密、公钥解密,这样们可以在终端软件公开我们的公钥而不会影响安全性。RSA这种特点常用在电信、等行业数字签名中。
SHA-1 算法的介绍:从一段字符串中计算出唯一标识这段字符串的信息摘要(160bit位=20位字符)和md5算法类似。
RSA、SHA-1算法在网上都有很详细的介绍不是本文介绍重点,本文重点介绍RSA算法在完成加密解密及数字签名过程中用不同开发语言对接的问题(java与c++)对于其它开发语言例如vb、delphi、pb等可以调用c++的lib、dll库文件来完成。
二、数字签名流程
1、A构建密钥对,将公钥公布给B1...B2,将私钥保留。
2、A使用私钥加密数据,然后对加密后的数据签名(签名算法:密文=rsa(明文,privatekey),Sgn=sha-1(密文) ,发送给B1..B2;B1..B2使用Sign来验证待解密数据是否有效,如果有效使用公钥对数据解密rsa(密文,publickey)、。
3、B1..B2使用公钥加密数据rsa(明文,publickey),向A发送经过加密后的数据;A 获得加密数据,通过私钥解密rsa密文,privatekey)。
4、数字只起到数据在网络传送中验证否被篡改过并保证加密数据的完整性。而RSA数据的安全是由RSA算法来完成的。
(工作流程图如下:)