rsa加密方式padding方式OAEPWithSHA256AndMGF1Padding(java端與c++端的協(xié)調(diào))

背景:

rsa作為數(shù)字簽名和數(shù)據(jù)加密來說是通常都會使用的朱巨,而不免有些是不同語言來做的落恼,這里主要是用于數(shù)據(jù)加密。

java客戶端使用的rsa加密padding方式為RSA/ECB/OAEPWithSHA256AndMGF1Padding方式(這里要說明一下:RSA/ECB/OAEPWithSHA256AndMGF1Padding和RSA/ECB/OAEPWithSHA-256AndMGF1Padding是由Bouncy Castle和SUN JCE提供的持际,這兩者通常情況可能java可以兼容突想,但有時基于硬件和軟件區(qū)別編譯會有不可預(yù)測的報(bào)錯)殴蹄。查看c++的openssl標(biāo)準(zhǔn)庫沒有這種加密方式

問題:

1.openssl現(xiàn)在的padding方式為RSA_PKCS1_PADDING, RSA_PKCS1_OAEP_PADDING猾担, RSA_NO_PADDING袭灯,這三種都是常見的padding方式,每種的使用注意事項(xiàng)現(xiàn)在網(wǎng)絡(luò)上由這大量的資源做參考绑嘹,但是java所使用的RSA/ECB/OAEPWithSHA256AndMGF1Padding方式是不同的稽荧,在openssl標(biāo)準(zhǔn)庫中并沒有這一算法的接口。

2.查閱各種資料工腋,最后顯示在botan庫中實(shí)現(xiàn)了這一加密方式蛤克,并查看了其實(shí)現(xiàn)源碼,大體思路為首先讀文件或者是讀取字符串的公鑰私鑰夷蚊,做加解密构挤,注意公鑰方式一定是X509格式的,而私鑰一定是PKCS8格式惕鼓,密鑰格式的轉(zhuǎn)換還是推薦使用openssl的來做轉(zhuǎn)換筋现。

? ? ? ? ? ? ? ? openssl pkcs8 -topk8 -inform PEM -in private.pem -outform pem -nocrypt -out pkcs8.pem

讀取進(jìn)來后對文本內(nèi)容做加解密計(jì)算,通過base64或者h(yuǎn)ex進(jìn)行格式化輸出箱歧。查看源代碼文件看算法實(shí)現(xiàn)矾飞,一個具體demo如下:

//text to decrypt

std::vector<uint8_t> pt(plaintext.data(),plaintext.data()+plaintext.length());

std::unique_ptr<Botan::RandomNumberGenerator> rng(new Botan::AutoSeeded_RNG);

//load pri key

Botan::DataSource_Memory key_in(fixed_rsa_key);

//go decrypt

std::unique_ptr<Botan::Private_Key> pk(Botan::PKCS8::load_key(key_in,*rng.get()));

Botan::PK_Decryptor_EME dec(*pk,*rng.get(), “EME1(SHA-256)”);

std::cout <<“dec:”<< Botan::hex_encode(dec.decrypt(pt));

3.botan庫中新版本存在一個問題就是必須要使用到libc庫的新版本,原因是輔助向量(auxiliary vector)呀邢,這個一直以來都是開放管理的洒沦,glibc庫在2.6之后對這個變量增加了新的庫函數(shù)getauxval(),獲取到需要的glibc庫价淌,匯編器as該版本也不能兼容老版申眼,需要更新binutils瞒津。

4.botan庫的最終結(jié)果做base64或者h(yuǎn)ex轉(zhuǎn)為明文即我們所需要的string輸出格式,但是私鑰的pkcs1的格式是不支持的括尸,翻閱源碼你會發(fā)現(xiàn)根本沒有pkcs1格式的私鑰巷蚪,需要用上述方法轉(zhuǎn)換為對應(yīng)的pkcs8格式,再做傳入

如果看完覺得有所收獲的話濒翻,記得點(diǎn)贊關(guān)注哦

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末屁柏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子有送,更是在濱河造成了極大的恐慌淌喻,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雀摘,死亡現(xiàn)場離奇詭異裸删,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)届宠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門烁落,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人豌注,你說我怎么就攤上這事伤塌。” “怎么了轧铁?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵每聪,是天一觀的道長。 經(jīng)常有香客問我齿风,道長药薯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任救斑,我火速辦了婚禮童本,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脸候。我一直安慰自己穷娱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布运沦。 她就那樣靜靜地躺著泵额,像睡著了一般。 火紅的嫁衣襯著肌膚如雪携添。 梳的紋絲不亂的頭發(fā)上嫁盲,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機(jī)與錄音烈掠,去河邊找鬼羞秤。 笑死缸托,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锥腻。 我是一名探鬼主播嗦董,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼母谎,長吁一口氣:“原來是場噩夢啊……” “哼瘦黑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起奇唤,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤幸斥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后咬扇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甲葬,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年懈贺,在試婚紗的時候發(fā)現(xiàn)自己被綠了经窖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡梭灿,死狀恐怖画侣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情堡妒,我是刑警寧澤配乱,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站皮迟,受9級特大地震影響搬泥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜伏尼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一忿檩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧爆阶,春花似錦燥透、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至徒役,卻和暖如春孽尽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背忧勿。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工杉女, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瞻讽,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓熏挎,卻偏偏與公主長得像速勇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子坎拐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容