Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Any tutorials on public key encryption in java? [closed]

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.

like image 738
Eugene M Avatar asked Dec 03 '08 20:12

Eugene M


People also ask

What is public key encryption in Java?

Asymmetric Cryptography, also known as Public Key Cryptography , is an encryption system in which two different but uniquely related cryptographic keys are used. The data encrypted using one key can be decrypted with the other.

Is public key encryption still used?

The RSA AlgorithmThe Rivest-Shamir-Adleman algorithm is one of the original public key cryptosystems and still the most widely used public key cryptography algorithm. RSA is widely used because of its ability to distribute public keys and provide digital signatures.

Can public key encryption be cracked?

The answer to this question is: Yes. It is possible to crack the public key encryption algorithm. The crucial element in any security tool like PKI is the cryptographic or hash algorithm used to generate the technology's private and public keys, or digital signatures.


1 Answers

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.

like image 134
erickson Avatar answered Sep 23 '22 12:09

erickson