【发布时间】:2020-04-07 22:58:20
【问题描述】:
我正在尝试学习如何在 Java 中使用带有 SHA256 的 RSA 算法对消息进行签名。当我生成一个 2048 位的 KeyPair 时,我发现公钥和私钥都是 294 字节。这是我查找键大小的代码:
import java.security.*;
public class RSATesting
{
public static void main(String[] args) throws Exception
{
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(2048, new SecureRandom());
KeyPair pair = generator.generateKeyPair();
byte[] publicKeyBytes=pair.getPublic().getEncoded();
System.out.println(publicKeyBytes.length);
byte[] privateKeyBytes=pair.getPublic().getEncoded();
System.out.println(privateKeyBytes.length);
}
}
为什么密钥不是 256 字节?
谢谢
【问题讨论】:
-
您的私钥仅与公开的大小相同,因为您为两者都调用了
getPublic:) -
欺骗stackoverflow.com/questions/2921508/…(大部分)来自近 10 年前。