Created
June 28, 2020 00:00
-
-
Save marcelodevops/e88470f41235a27e7a42d90e25334070 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Generate Symmetric Key (AES with 128 bits) | |
KeyGenerator generator = KeyGenerator.getInstance("AES"); | |
generator.init(128); // The AES key size in number of bits | |
SecretKey secKey = generator.generateKey(); | |
//Encrypt plain text using AES | |
String plainText = "Please encrypt me urgently..." | |
Cipher aesCipher = Cipher.getInstance("AES"); | |
aesCipher.init(Cipher.ENCRYPT_MODE, secKey); | |
byte[] byteCipherText = aesCipher.doFinal(plainText.getBytes()); | |
//Encrypt the key using RSA public key | |
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); | |
kpg.initialize(2048); | |
KeyPair keyPair = kpg.generateKeyPair(); | |
PublicKey puKey = keyPair.getPublic(); | |
PrivateKey prKey = keyPair.getPrivate(); | |
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); | |
cipher.init(Cipher.PUBLIC_KEY, puKey); | |
byte[] encryptedKey = cipher.doFinal(secKey.getEncoded()/*Seceret Key From Step 1*/); | |
//Send encrypted data (byteCipherText) + encrypted AES Key (encryptedKey) | |
//On the client side, decrypt symmetric key using RSA private key | |
cipher.init(Cipher.PRIVATE_KEY, prKey); | |
byte[] decryptedKey = cipher.doFinal(encryptedKey); | |
//Decrypt the cipher text using decrypted symmetric key | |
//Convert bytes to AES SecertKey | |
SecretKey originalKey = new SecretKeySpec(decryptedKey , 0, decryptedKey .length, "AES"); | |
Cipher aesCipher = Cipher.getInstance("AES"); | |
aesCipher.init(Cipher.DECRYPT_MODE, originalKey); | |
byte[] bytePlainText = aesCipher.doFinal(byteCipherText); | |
String plainText = new String(bytePlainText);` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment