Asymmetric encryption algorithm is relative to symmetric encryption algorithm, for symmetric encryption algorithm please refer to the previous summary, today for everyone to introduce the DH algorithm, DH is a key exchange algorithm, the receiver based on the sender encryption key, generate receiver decryption key. Let's take a look at the following:
Initialize Sender key:
Keypairgenerator sendkeypairgenerator = keypairgenerator.getinstance ("DH"); Sendkeypairgenerator.initialize (+); = Sendkeypairgenerator.generatekeypair (); byte [] Sendpublickeyenc = Sendkeypair.getpublic (). getencoded (); // generate sender Public key, send to receiver (network, file ...) )
Initialize the receiver key:
Keyfactory receiverkeyfactory = keyfactory.getinstance ("DH"); X509encodedkeyspec X509encodedkeyspec=NewX509encodedkeyspec (SENDPUBLICKEYENC); PublicKey Receivepublickey=receiverkeyfactory.generatepublic (X509ENCODEDKEYSPEC); Dhparameterspec Dhparameterspec=((Dhpublickey) receivepublickey). Getparams (); Keypairgenerator Receiverkeypairgenerator= Keypairgenerator.getinstance ("DH"); Receiverkeypairgenerator.initialize (DHPARAMETERSPEC); KeyPair Receiverkeypair=Receiverkeypairgenerator.generatekeypair (); Privatekey Receiverprivatekey=receiverkeypair.getprivate (); byte[] Receiverpublickeyenc = Receiverkeypair.getpublic (). getencoded ();
To build the receiver key:
Keyagreement receiverkeyagreement = keyagreement.getinstance ("DH"); Receiverkeyagreement.init (Receiverprivatekey); true ); = Receiverkeyagreement.generatesecret ("DES"); // Receiving Party key
To build the sender key:
Keyfactory sendkeyfactory = keyfactory.getinstance ("DH"); New X509encodedkeyspec (RECEIVERPUBLICKEYENC); = Sendkeyfactory.generatepublic (x509encodedkeyspec); = Keyagreement.getinstance ("DH"); Sendkeyagreement.init (Sendkeypair.getprivate ()); true ); = Sendkeyagreement.generatesecret ("DES"); // Sender Key
Sender-Side encryption:
Cipher Sendcipher = cipher.getinstance ("DES"); Sendcipher.init (Cipher.encrypt_mode, Senddeskey); byte [] Sendresult = sendcipher.dofinal (src.getbytes ()); System.out.println ("Sendresult:" +hex.encodehexstring (Sendresult));
Receiver decryption:
Cipher Receivercipher = cipher.getinstance ("DES"); Receivercipher.init (Cipher.decrypt_mode, Receiverdeskey); byte [] Receiverresult = receivercipher.dofinal (sendresult); System.out.println ("Receiverresult:" +new String (Receiverresult));
The Asymmetric Encryption Algorithm (DH) based on key exchange is summed up here.
The non-symmetric encryption DH algorithm for information encryption