如何用已知的参数生成一个RSAPrivateKey


通过动态hook,打印出一个PrivateKey的内容,参数包括:


 modulus, publicExponent, privateExponent, primeP, primeQ, primeExponentP, primeExponentQ, crtCoefficient

这些参数的原类型都是BigInteger,因为打印到文件中都变成了String类型,我想重新利用这些参数生成一个完整的新PrivateKey。

因为只需要私钥,并不需要用keypair这样的类去产生密钥对,但是采用RSAPrivateCrtKeySpec生成的私钥打印到文件中发现,与直接通过hook打印出来的私钥并不一致。

我自己生成私钥的代码:


 BigInteger modulus = new BigInteger("84ba812b1ebaf".getBytes());

....其他几个参数类同赋值


 RSAPrivateCrtKeySpec spec = new RSAPrivateCrtKeySpec(modulus, publicExponent, privateExponent, primeP, primeQ, primeExponentP, primeExponentQ, crtCoefficient);
            KeyFactory keyFactory = KeyFactory.getInstance("RSA","BC");
            PrivateKey privateKey = keyFactory.generatePrivate(spec);

安全

你好我叫大表哥 8 years, 11 months ago

Your Answer