加解密過程遇到的問題及解決方法

私鑰公鑰格式

常見的加解密

  1. 導(dǎo)入jar包:javabase64-1.3.1.jar

  2. 生成base64編碼后的公鑰和私鑰

  3. 公鑰加密私鑰解密, 或者私鑰加密公鑰解密

這里生成的公鑰和私鑰是經(jīng)過base64編碼的, PEM格式的, 進行了pkcs8編碼的字符串。加密的過程要創(chuàng)建私鑰或者公鑰的實例。

調(diào)用XXX公司接口加密

在制作加密鎖的過程中, 私鑰和公鑰文件是客戶端調(diào)用XXX公司接口產(chǎn)生的。私鑰不可以讀出, 公鑰可以讀出。但是可以在本地產(chǎn)生公鑰文件和私鑰文件。

可以調(diào)用該公司的接口通過私鑰加密, 然后調(diào)用java接口使用公鑰解密。 但是創(chuàng)建公鑰實例過程總報錯,類似于init format錯誤。

原來,調(diào)用XXX公司接口產(chǎn)生的公鑰和私鑰, 是人家XXX公司特有的格式, 需要對私鑰和公鑰進行格式轉(zhuǎn)換, 轉(zhuǎn)換成PEM格式。

XXX公司給的開發(fā)包中, 含有轉(zhuǎn)換工具, 可以利用轉(zhuǎn)換工具將特定格式的私鑰文件和公鑰文件轉(zhuǎn)換成PEM格式的文件。

轉(zhuǎn)換后, 可以知道查看文件知道私鑰串和公鑰串。 如果拔掉加密鎖, 調(diào)用javabase64-1.3.1.jar中的接口,在創(chuàng)建公鑰實例或者私鑰實例的過程仍然報錯(algid parse error, not a sequence?), 這是因為此時的PEM格式私鑰和公鑰是PKCS#1編碼, 沒有轉(zhuǎn)換成PKCS8編碼。 可以下載openssl工具, 使用openssl命令將私鑰文件和公鑰文件進行pkcs8編碼, 也可以使用在線工具進行轉(zhuǎn)換(http://tool.chacuo.net/cryptrsapkcs1pkcs8)。

私鑰文件進行pkcs8編碼命令:
pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt

公鑰文件在進行pkcs8編碼的過程總是報錯, 我覺得, 公鑰文件pkcs8編碼需要私鑰文件, 因此通過在線工具是不行的。只能通過openssl命令, 注意和私鑰進行pkcs8編碼命令不同:
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

轉(zhuǎn)換之后, 就可以調(diào)用jar包中的接口進行加密解密了。

而且通過測試,還可以使用XXX公司的私鑰加密(使用該公司格式私鑰文件,調(diào)用該公司接口)。然后使用jar包中的java接口解密(使用PEM格式公鑰, 調(diào)用Java接口)。我覺得, 該公司加密接口,應(yīng)該也是先將私鑰格式轉(zhuǎn)換成PEM格式, 然后加密。

-----------------------------------------2018-06-07--------------------------------------------------------
生成PKCS#1編碼私鑰
genrsa -out rsa_private_key.pem 1024

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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