我正在使用以下命令使用OpenSSL加密我的私钥文件:
$ openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key.pem -out private_key.der -v1 PBE-SHA1-3DES
文档说明选项-v1 PBE-SHA1-3DES
将使用三重DES加密,但没有提到它正在使用哪个键控选项。我可以假设它使用168位三重DES吗?
答案 0 :(得分:1)
答案似乎是肯定的,当我从Java读取文件时(另请参阅我的其他question),我可以得到算法即:
1.2.840.113549.1.12.1.3 from algParams.getAlgorithm()
谷歌搜索产生:pbeWithSHAAnd3-KeyTripleDES-CBC
另请参阅:http://www.oid-info.com/get/1.2.840.113549.1.12.1.3
这是一个3键三重DES,需要168位。
public static byte[] decryptPrivateKey(byte[] key) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException {
PBEKeySpec passKeySpec = new PBEKeySpec("p".toCharArray());
EncryptedPrivateKeyInfo encryptedKey = new EncryptedPrivateKeyInfo(key);
System.out.println(encryptedKey.getAlgName());
System.out.println("key length: " + key.length);
AlgorithmParameters algParams = encryptedKey.getAlgParameters();
System.out.println(algParams.getAlgorithm());