Any tutorials on public key encryption in java?

Eugene M picture Eugene M · Dec 3, 2008 · Viewed 26.8k times · Source

I've been able find information on symmetric encryption and hashing but I've been having quite a bit of trouble finding much information on any sort of public key encryption for java. What I'd like to do is make a very simple proof of concept program that takes a string ( or a file I suppose), encrypts it with a public key and then decrypts it with a private key.

Any tutorial links or examples would be appreciated. I just want to make something demonstrating how you can use public key encryption in Java.

Answer

erickson picture erickson · Dec 3, 2008

Normally, you use public key encryption to encrypt a symmetric key, in part because public key encryption is very slow. Typically, you'd send the recipient the following, so that they can decrypt your message:

  1. The symmetric key, encrypted with the recipient's public key.
  2. Parameters for the algorithms used, usually an initialization vector for the symmetric cipher.
  3. Identifiers for the encryption algorithms used.
  4. The ciphertext—the actual message, encrypted under the symmetric cipher.

I found the sample code in the JCE documentation sufficient to get things working.

The standard format for bundling all of this information up is the Cryptographic Message Syntax, or CMS, which is used by S/MIME in email applications. I recommend using Bouncy Castle's libraries; they are solid, fairly simple, and actively maintained. The reference documentation is a bit weak, but they do provide code examples.