RSA解密失敗解決方案

在使用Objective-C-RSA進行RSA解密遇到的問題:

1、使用github上demo中的公鑰串和私鑰串,加解密是可以成功

2、通過RSA密鑰生成器生成的公鑰串和私鑰串,加密可成功,解密失敗

通過跟蹤代碼發(fā)現(xiàn)問題出現(xiàn)在:stripPrivateKeyHeader 這個方法中,

unsigned char *c_key = (unsigned char *)[d_key bytes];

unsigned int? idx = 22; //magic byte at offset 22 ? ?

if (0x04 != c_key[idx++]) { ? ? ? ? return nil; ? ? }

由于c_key[idx++] != 0x04,所以直接返回nil;

針對這種情況,嘗試將addPrivateKey方法中,data = [RSA stripPrivateKeyHeader:data];的調(diào)用刪除,刪除后發(fā)現(xiàn)加解密可成功

這行代碼是干什么的作用是什么呢?

原因是,MAC下生成的私鑰不能直接被使用,需要進行PKCS#8編碼 編碼之后就可以了

pkcs8 -topk8 -in rsa_private_key.pem -out pkcs8_rsa_private_key.pem -nocrypt

為了解決通過pem生成的私鑰解密問題,所以此處可以修改代碼,通過判斷是否需要是pem生成的私鑰還是私鑰字符串,來決定是否調(diào)用stripPrivateKeyHeader方法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容