用于加密私钥的JCEKS PBE的算法是什么?

时间:2016-02-24 18:21:46

标签: java encryption jce jks

我想解密Java JCEKS密钥库中的私钥,我不想使用Java。

我可以找到PBEWithMD5AndTripleDES的描述,但不能找到实际的实现。

该评论据称解释了推导:

/**
 * This class implements a proprietary password-based encryption algorithm.
 * It is based on password-based encryption as defined by the PKCS #5
 * standard, except that is uses triple DES instead of DES.
 *
 * Here's how this algorithm works:
 *
 * 1. Create random salt and split it in two halves. If the two halves are
 *    identical, invert one of them.
 * 2. Concatenate password with each of the halves.
 * 3. Digest each concatenation with c iterations, where c is the
 *    iterationCount. Concatenate the output from each digest round with the
 *    password, and use the result as the input to the next digest operation.
 *    The digest algorithm is MD5.
 * 4. After c iterations, use the 2 resulting digests as follows:
 *    The 16 bytes of the first digest and the 1st 8 bytes of the 2nd digest
 *    form the triple DES key, and the last 8 bytes of the 2nd digest form the
 *    IV.
 *
 * @author Jan Luehe
 * @see javax.crypto.Cipher
 */

但是,第一次连接是password + half-of-salt,还是half-of-salt + password?是以下轮次password + digest的输入,还是digest + password

在8位字符或完整的16位字符之间,以及可能的串联组合,你会认为通过反复试验,我现在应该已经解决了这个问题。

我知道 salt 迭代密码,甚至是密文应该解密的明文(即我有解密的数据)。

导出一个24字节的DES3密钥,无论是修复奇偶校验还是单独使用,以及一个8字节的IV,在DES3 CBC模式下解密,我都无法重新创建我的明文。

此评论描述的算法是什么?

1 个答案:

答案 0 :(得分:1)

感谢erikson 1回复了on this answer对另一个问题的评论,感谢Ebbe M. Pedersen。最后,我应该在尝试不同的组合时跳过答案,但不知何故错过了它。

对于那些感兴趣的人,一旦你打开JKS并找到条目,加密的PKCS#8就会显示JCEKS算法1.3.6.1.4.1.42.2.19.1以及盐和迭代计数参数以及那些和你的8- bit / char密码你可以解密密文,找到内部的,未加密的PKCS#8,拿着你的私钥。

$(this).parent(".share").find(".clipboardtext").focus();