私鑰公鑰格式
常見的加解密
導(dǎo)入jar包:javabase64-1.3.1.jar
生成base64編碼后的公鑰和私鑰
公鑰加密私鑰解密, 或者私鑰加密公鑰解密
這里生成的公鑰和私鑰是經(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