6

How can I generate a symmetric key with Bouncy Castle? Both PrivateKeyFactory and PublicKeyFactory seem related to AsymmetricKeyParameter.

I don't want to know any JCA/JCE API - instead I'm only interested in Bouncy Castle specific API.

Can (should) I just generate a random bytes?

Duncan Jones
  • 67,400
  • 29
  • 193
  • 254
Jin Kwon
  • 20,295
  • 14
  • 115
  • 184
  • 1
    What symmetric key type do you want? Note: I edited your question to match what I think you were asking for (e.g. a BC-specific solution). If I've made an error, please correct it! – Duncan Jones Jul 23 '13 at 07:13
  • @DuncanJones Say, AES 128-bit key? – Jin Kwon Jul 23 '13 at 07:42

1 Answers1

12

AES does not have any weak keys, so a straightforward random generation should be fine.

// SecureRandom is expensive to initialize (takes several milliseconds) –
// consider keeping the instance around if you are generating many keys.
SecureRandom random = new SecureRandom();
byte[] keyBytes = new byte[16];
random.nextBytes(keyBytes);
SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");
ntoskrnl
  • 5,714
  • 2
  • 27
  • 31