RSA算法签名技术Java与C++统一(加密解密结果一样).docVIP

RSA算法签名技术Java与C++统一(加密解密结果一样).doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RSA算法签名技术Java与C++统一(加密解密结果一样).doc

RSA算法签名技术Java与C++统一 (加密解密结果一样) 源代码下载地址:/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算法来完成的。 (工作流程图如下:) Java与C++等开发语言RSA算法统一性分析 要完成上面的数字签名技术关键是对RSA算法在不同开发语言中标准一致,从而达到RSA能正确加密、解密。 JAVA是开源可破解的并且RSA算法封装的很好所以在网站找到用java实现RSA数字例子很容易。这里们提供你个很典型的JAVA实现RSA加密及数字签名例子。 下载地址: /product_down/rsa_c++_java.rar JAVA生产密钥对 (伪代码): private String publicKey; private String privateKey; MapString, Object keyMap = RSACoder.initKey(); publicKey = RSACoder.getPublicKey(keyMap); privateKey = RSACoder.getPrivateKey(keyMap); System.err.println(公钥: \n\r + publicKey); System.err.println(私钥: \n\r + privateKey); 那么我们发现JAVA采用的公钥、私钥与标准的算法说的公钥=E+M、 私钥=D+M 不同那么我们如何通过JAVA的publickey、privatekey获得E、D、M呢? 分解java公钥、私钥: BigInteger e = publicKey.getPublicExponent(); BigInteger n =publicKey.getModulus(); BigInteger d = privateKey.getPrivateExponent(); BigInteger m = privateKey.getModulus(); System.out.println(==============C++程序密钥==================); System.out.println(因子E:+e.toString()+\r\n); System.out.println(因子D:+d.toString()+\r\n); System.out.println(因子N:+n.toString()+\r\n); System.out.println(因子M:+m.toString()+\r\n); 这样我们就获得啦E、D、M 从而达到啦JAVA密钥与C++等开发语言密钥的一致性。 RSA加密、解密算法: Java中采用javax.crypto.Cipher JDK类库,都是JDK封装好的方法不需要我去编写。 代码

文档评论(0)

xinshengwencai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档