title: Trying to understand Java RSA key size
body: <p>The key generator was initilized with a size of 1024, so why the printed sizes are 635 and 162?</p>
  
  <pre><code>import java.security.KeyPair;
  import java.security.KeyPairGenerator;
  import java.security.NoSuchAlgorithmException;
  import java.security.NoSuchProviderException;
  import java.security.interfaces.RSAPrivateKey;
  import java.security.interfaces.RSAPublicKey;
  
  public class TEST {
  
      public static KeyPair generateKeyPair() throws NoSuchAlgorithmException, NoSuchProviderException {
      KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA", "BC");
      keyPairGenerator.initialize(1024);
      return keyPairGenerator.generateKeyPair();
      }
  
      public static void main(String[] args) throws Exception {
  
      KeyPair keyPair = generateKeyPair();
      RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
      RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
  
      System.out.println("Size = " + privateKey.getEncoded().length);
      System.out.println("Size = " + publicKey.getEncoded().length);
  
      }
  
  }
  </code></pre>