以下代码在每次运行时随机打印634,635,636。为什么它不恒定?
public static void main(String[] args) throws Exception {
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA", "BC");
keyPairGen.initialize(1024);
RsaKeyPair keyPair = new RsaKeyPair(keyPairGen.generateKeyPair());
System.out.println(keyPair.getPrivate().getEncoded().length);
}
答案 0 :(得分:4)
正如我在其他主题中所解释的那样,getEncoded()
返回一个DER编码的ASN.1对象。在BER和DER编码中,整数用可变数量的八位字节编码。 DER和BER之间的主要区别在于DER需要最短的编码。
RSAPrivateKey
对象中有几个素数,它们可能不占用完整的1024位,它会导致DER编码的大小差异。