【问题标题】:Java RSA Key SizesJava RSA 密钥大小
【发布时间】: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 字节?

谢谢

【问题讨论】:

标签: java rsa


【解决方案1】:

RSA 密钥与 AES 密钥不同。

AES 密钥是一些随机字节。 RSA 密钥是数字。 RSA 模数 (N) 定义了长度。

由于getEncoded();,您的密钥长度为 294 字节。它返回一个格式化的密钥,而不是真正的长度。

【讨论】:

  • 是的。你可以打印 pair.getPublic()。它会打印数字。
  • @PeterY。试试 System.out.println(pair.getPublic());它会显示你的模数。
  • RSA 公钥还有一点,即公共指数。
  • @JamesReinstateMonicaPolk 是的。还有一个私有指数
  • @PeterY。这篇文章会对你有所帮助:stackoverflow.com/questions/19818550/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多