Peter Y. :
Estoy tratando de aprender a firmar los mensajes utilizando el algoritmo RSA con SHA256 en Java. Cuando me genera un par de claves de 2048 bits, he encontrado que tanto el público y la clave privada eran 294 bytes. Aquí está mi código para encontrar el tamaño de las claves:
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);
}
}
¿Por qué son las claves no 256 bytes?
Gracias
Jakob:
claves RSA no son como las claves AES.
Claves AES son algunos bytes aleatorios. Claves RSA son números. El módulo RSA ( N
) define la longitud.
Su clave es 294 bytes de longitud, debido a getEncoded();
. Devuelve una clave con formato y no la verdadera longitud.