我想解密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模式下解密,我都无法重新创建我的明文。
此评论描述的算法是什么?
答案 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();