Java RSA 密钥大小

Java RSA Key Sizes

我正在尝试学习如何在 Java 中使用 SHA256 的 RSA 算法对消息进行签名。当我生成一个2048位的KeyPair时,我发现public和私钥都是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 字节?

谢谢

RSA 密钥不同于 AES 密钥。

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

你的密钥是 294 字节长,因为 getEncoded();。它 returns 一个格式化的密钥而不是真正的长度。