Java: Why does the 512-bit RSA KeyPairGenerator return 65 byte keys?

this is probably a newbie question. I generate key pairs with Java:

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
keyGen.initialize(512, random);

KeyPair keyPair = keyGen.genKeyPair();

RSAPrivateKey privateKey = (RSAPrivateKey)keyPair.getPrivate();

Now I always thought that privateKey.getModulus () and privateKey.getPrivateExponent () form a "private key" and that they have a key size (512 bits) passed to the key generator.

However, privateKey.getPrivateExponent (). toByteArray () sometimes returns 64 bytes (as I expected), sometimes an array of 65 bytes.

Why is it sometimes 65 bytes? Did I miss something?

+3
source share
3 answers

getPrivateExponent() BigInteger, toByteArray() , . 512 , BigInteger 513- , , , 511- 512- , 1. 513 65 .

, 0, 65.

+10

RSA, , , , .. . 512 , . , .

getPrivateExponent a BigInteger. getPrivateExponent().toByteArray() BigInteger. A BigInteger. 512 (64 ) . : ( ), , BigInteger , . , , .

+2

8 * 64 = 512?

: , 64 65, , .

-1
source

Source: https://habr.com/ru/post/1720174/


All Articles