gpt4 book ai didi

java - 为什么我的 RSA 2048 公钥是 294 字节长?

转载 作者:搜寻专家 更新时间:2023-11-01 01:42:42 24 4
gpt4 key购买 nike

如果我这样做:

KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(2048);
KeyPair kp = kpg.genKeyPair();
Key publicKey = kp.getPublic();
byte [] pubKey = publicKey.getEncoded();
System.out.println("Size: " + pubKey.length);

我的输出值为 294,RSA 2048 输出不应该是 256 字节长吗?

最佳答案

RSA key 不像 AES key 那样由随机字节组成;它由数字组成。 RSA 的 key 大小由模数定义,但它还需要一个公共(public)指数(通常是 Fermat 的第四个数或另一个小素数)。因此,使用 getEncoded() 时,两者都会返回嵌入到 ASN.1 DER 编码字节数组中。它使用通常存在于 X5.09 证书中的编码,称为“SubjectPublicKeyInfo”。

如果要提取 key 大小,请改用 ((RSAPublicKey) publicKey).getModulus().bitLength()。要查看结构,请使用 openssl asn1parse 或使用在线解码器,例如 this .

关于java - 为什么我的 RSA 2048 公钥是 294 字节长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26599197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com