加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

RSA体系 c++/java相互进行加签验签--转

发布时间:2020-12-14 06:19:16 所属栏目:Java 来源:网络整理
导读:在web开发中,采用RSA公钥密钥体系自制ukey,文件证书登陆时,普遍的做法为:在浏览器端采用c++ activex控件,使用 c++的第三库openssl进行RAS加签操作,在服务器端采用java对客户端的签名进行验签操作。这就涉及到c++ openssl和java之间交互加签验签对客户

在web开发中,采用RSA公钥密钥体系自制ukey,文件证书登陆时,普遍的做法为:在浏览器端采用c++ activex控件,使用 c++的第三库openssl进行RAS加签操作,在服务器端采用java对客户端的签名进行验签操作。这就涉及到c++ openssl和java之间交互加签验签对客户端身份进行验证的过程。

? ? ? ?如果你通过搜索查到我这边文章,相信你一定发现,采用openssl加签后的 数据,在java端却验签不成功,使用openssl验签可以通过。问题在于openssl的公钥发在服务端转换成java RSA 公钥时有问题,openssl的公钥格式里附加了它自己的一些额外信息。所以在服务端java构造自己的pubkey时必须先剔除openssl的特有信息。

? ? ? ?例如如果我么采用openssl生成 modulus?size?为1024, exponent为65537 的公钥秘钥对---RSA_generate_key(1024,65537,NULL,NULL);那么我们在java端通过openssl的公钥构造java格式的公钥时,我们就必须采用如下方式获得modulus ,然后采用java的方式构造公钥,进行验签操作。

/** 如果你问我里边到底加了一些什么信息,我也不知道,我是从下标1开始不断测试,才得出应该从下标7开始获取modulus值 ***/

至于openssl我就不再做介绍,网上有很多资料,而且它本身的文档也很齐全

在后面附上一些相关的类,?SignProvider.java 端负责公钥转换和加签验签 ? ? Base64.java负责64为编码 ? ?fcOpenSslRef.rar---Openssl相关类

注:本人对c++也不熟,所以上面的一些c++代码只做参考。

原文:http://www.chlusoft.com/tech/347.jhtml

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读