java对数组对象加签验签_RSA体系 c++/java相互进行加签验签--转

在web开发中,采用RSA公钥密钥体系自制ukey,文件证书登陆时,普遍的做法为:在浏览器端采用c++ activex控件,使用 c++的第三库openssl进行RAS加签操作,在服务器端采用java对客户端的签名进行验签操作。这就涉及到c++ openssl和java之间交互加签验签对客户端身份进行验证的过程。如果你通过搜索查到我这边文章,相信你一定发现,采用openssl加签后的 数据,在ja...
摘要由CSDN通过智能技术生成

在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的方式构造公钥,进行验签操作。

private static byte[] getModulus(byte[] pkData, int begin){

byte[] modData = new byte[128] ;

byte[] ss = {pkData[0],pkData[1],pkData[2],pkData[3]};

for(int i = 0, y = begin; i < 128; i++,y++){

modD

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值