日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

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

發(fā)布時間:2025/4/5 c/c++ 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RSA体系 c++/java相互进行加签验签--转 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在web開發(fā)中,采用RSA公鑰密鑰體系自制ukey,文件證書登陸時,普遍的做法為:在瀏覽器端采用c++ activex控件,使用 c++的第三庫openssl進(jìn)行RAS加簽操作,在服務(wù)器端采用java對客戶端的簽名進(jìn)行驗簽操作。這就涉及到c++ openssl和java之間交互加簽驗簽對客戶端身份進(jìn)行驗證的過程。

? ? ? ?如果你通過搜索查到我這邊文章,相信你一定發(fā)現(xiàn),采用openssl加簽后的 數(shù)據(jù),在java端卻驗簽不成功,使用openssl驗簽可以通過。問題在于openssl的公鑰發(fā)在服務(wù)端轉(zhuǎn)換成java RSA 公鑰時有問題,openssl的公鑰格式里附加了它自己的一些額外信息。所以在服務(wù)端java構(gòu)造自己的pubkey時必須先剔除openssl的特有信息。

? ? ? ?例如如果我么采用openssl生成 modulus?size?為1024, exponent為65537 的公鑰秘鑰對---RSA_generate_key(1024, 65537, NULL, NULL);那么我們在java端通過openssl的公鑰構(gòu)造java格式的公鑰時,我們就必須采用如下方式獲得modulus ,然后采用java的方式構(gòu)造公鑰,進(jìn)行驗簽操作。

?

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++){

modData[i] = pkData[y];

}

return modData;

}

?

/**

?* 從openssl中提起相關(guān)的128為的公鑰數(shù)據(jù)

?* @param b64Str

?* @return

?*/

private static byte[] get128PkData(String b64Str){

String pk = b64Str.replace("-----BEGIN RSA PUBLIC KEY-----", "");//剔除前面的信息

pk = pk.replace("-----END RSA PUBLIC KEY-----", "");// 剔除后面的信息

byte[] pkData = Base64.decode(pk);

return getModulus(pkData, 7);//下標(biāo)從7開始,獲得128 bytes的modulus

}

/** 如果你問我里邊到底加了一些什么信息,我也不知道,我是從下標(biāo)1開始不斷測試,才得出應(yīng)該從下標(biāo)7開始獲取modulus值 ***/

?

/**

?* 由1024位的公鑰轉(zhuǎn)換成x509格式的公鑰

?* @param modData

?* @return

?* @throws Exception

?*/

private static PublicKey getPublicKey(byte[] modData) throws Exception{

KeyFactory keyf = KeyFactory.getInstance("RSA");

RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(new BigInteger(modData), new BigInteger("65537"));

RSAPublicKey pk = (RSAPublicKey) keyf.generatePublic(pubKeySpec);

// 解密由base64編碼的公鑰,并構(gòu)造X509EncodedKeySpec對象

java.security.spec.X509EncodedKeySpec bobPubKeySpec = new java.security.spec.X509EncodedKeySpec(

pk.getEncoded());

return keyf.generatePublic(bobPubKeySpec);

}

至于openssl我就不再做介紹,網(wǎng)上有很多資料,而且它本身的文檔也很齊全

在后面附上一些相關(guān)的類, ?SignProvider.java 端負(fù)責(zé)公鑰轉(zhuǎn)換和加簽驗簽 ? ? Base64.java負(fù)責(zé)64為編碼 ? ?fcOpenSslRef.rar---Openssl相關(guān)類

注:本人對c++也不熟,所以上面的一些c++代碼只做參考。

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

轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/p/3922508.html

總結(jié)

以上是生活随笔為你收集整理的RSA体系 c++/java相互进行加签验签--转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 不卡av电影在线观看 | 波多野结衣毛片 | 国产精品久久久久久网站 | 好吊妞视频在线 | 在线免费观看黄色小视频 | 日韩精品电影在线 | 欧美精品成人久久 | 亚洲精品欧美在线 | 国产欧美专区 | 日本妈妈9| 欧美黄色a级 | 国产高清一区二区三区 | 性欧美jzjz2 九草影院 | 欧美猛交xxx | 午夜美女视频 | 成人免费播放视频 | 91九色porn| 午夜精品免费视频 | 性色一区二区三区 | 日韩全黄| 性生活三级视频 | 久久综合久久综合久久综合 | 72成人网| 欧美一级视频 | 人妻91麻豆一区二区三区 | 黄色小视频在线观看免费 | 欧洲一区二区在线观看 | 国产三级精品三级在线 | 俺去俺来也在线www色官网 | 日韩午夜在线观看 | 久久99免费视频 | 日本大尺度电影免费观看全集中文版 | 欧美日本中文字幕 | 亚洲涩色 | 久久加久久 | 91精品一区二区三区四区 | sese久久| 九九午夜视频 | 久久色在线 | 久久综合爱| 国产精品二| 7777精品久久久久久 | 久久九九精品视频 | 欧美 日韩 高清 | aa一级黄色片 | 精品xxxx| 久久久久久久国产精品美女 | 波多野结衣成人在线 | 三级黄色片网站 | 国产精品久久久久久久蜜臀 | 亚洲国产精品人人爽夜夜爽 | 国产手机av在线 | 国产成人免费片在线观看 | 中文字幕超清在线免费观看 | 操亚洲美女| 亚洲精品久久一区二区三区777 | 一区二区三区www污污污网站 | av一二三 | a级免费观看| 久久高清无码视频 | 精品国产91久久久久久久妲己 | 国产天堂久久 | 国产男男一区二区三区 | 中文乱码人妻一区二区三区视频 | 91丨国产| 亚洲精品短视频 | 久久久久久久久久久久久久av | 亚洲一区二区三区黄色 | 日日夜夜精品免费视频 | 极品美女一区二区三区 | 亚欧洲精品| 亚洲欧美高清在线 | 无码精品一区二区三区在线 | 亚洲男人的天堂网 | 国产激情免费 | 亚洲视频www| 少妇又色又紧又大爽又刺激 | 欧美性猛交xxxx乱大交蜜桃 | 国产高清二区 | 一区二区三区四区国产 | 国产成年人视频网站 | 亚洲黄色激情 | 少妇av导航 | 伊人蕉 | 欧美午夜激情视频 | 91大片在线观看 | 95国产精品 | 另类欧美日韩 | 欧美另类国产 | 呦呦网 | 小黄网站在线观看 | 国产综合视频在线 | www.欧美视频 | 丝袜熟女一区二区三区 | 久久久高潮 | 欧美在线一级片 | 在线看免费 | 午夜影院在线观看视频 | 欧美日韩在线播放 |