- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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封装好的方法不需要我去编写。
代码
您可能关注的文档
- 中国地质大学 武汉教学研究项目结题验收表.doc
- 工商企业经营管理new.doc
- 【新视野大学英语视听说教程2】『答案』.doc
- 市场营销专业教学计划new.doc
- 数字信号光纤通信技术实验new.doc
- 数学分析答案62237new.doc
- 黎颂文:回归音乐本质 提高音乐素养.docx
- 2013德化县公务员继续教育班.doc
- 《新编大学物理》(上、下册)教材习题答案new.doc
- 社会统计学与spss应用练习题new.doc
- 2024年证券分析与咨询服务项目投资申请报告代可行性研究报告.docx
- 2024年铬酸酐项目资金申请报告代可行性研究报告.docx
- 2024年清洁胶项目资金申请报告代可行性研究报告.docx
- 2024年肉松饼项目投资申请报告代可行性研究报告.docx
- 2024年陆上泵项目资金需求报告代可行性研究报告.docx
- 2024年未硫化复合橡胶及其制品项目资金需求报告代可行性研究报告.docx
- 2024年精密温控节能设备项目资金筹措计划书代可行性研究报告.docx
- 2024年汽车覆盖件模具项目资金筹措计划书代可行性研究报告.docx
- 宋词行书钢笔字帖.pdf
- 我的暑假生活作文三年级300字10篇.pdf
文档评论(0)