AES ENCRYPTION
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
import javax.crypto.Cipher; | |
import javax.crypto.KeyGenerator; | |
import javax.crypto.SecretKey; | |
import javax.crypto.spec.GCMParameterSpec; | |
import java.util.Base64; | |
/** | |
* Possible KEY_SIZE values are 128, 192 and 256 | |
* Possible T_LEN values are 128, 120, 112, 104 and 96 | |
*/ | |
public class AES { | |
private SecretKey key; | |
private final int KEY_SIZE = 128; | |
private final int T_LEN = 128; | |
private Cipher encryptionCipher; | |
public void init() throws Exception { | |
KeyGenerator generator = KeyGenerator.getInstance("AES"); | |
generator.init(KEY_SIZE); | |
key = generator.generateKey(); | |
} | |
public String encrypt(String message) throws Exception { | |
byte[] messageInBytes = message.getBytes(); | |
encryptionCipher = Cipher.getInstance("AES/GCM/NoPadding"); | |
encryptionCipher.init(Cipher.ENCRYPT_MODE, key); | |
byte[] encryptedBytes = encryptionCipher.doFinal(messageInBytes); | |
return encode(encryptedBytes); | |
} | |
public String decrypt(String encryptedMessage) throws Exception { | |
byte[] messageInBytes = decode(encryptedMessage); | |
Cipher decryptionCipher = Cipher.getInstance("AES/GCM/NoPadding"); | |
GCMParameterSpec spec = new GCMParameterSpec(T_LEN, encryptionCipher.getIV()); | |
decryptionCipher.init(Cipher.DECRYPT_MODE, key, spec); | |
byte[] decryptedBytes = decryptionCipher.doFinal(messageInBytes); | |
return new String(decryptedBytes); | |
} | |
private String encode(byte[] data) { | |
return Base64.getEncoder().encodeToString(data); | |
} | |
private byte[] decode(String data) { | |
return Base64.getDecoder().decode(data); | |
} | |
public static void main(String[] args) { | |
try { | |
AES aes = new AES(); | |
aes.init(); | |
String encryptedMessage = aes.encrypt("TheXCoders"); | |
String decryptedMessage = aes.decrypt(encryptedMessage); | |
System.err.println("Encrypted Message : " + encryptedMessage); | |
System.err.println("Decrypted Message : " + decryptedMessage); | |
} catch (Exception ignored) { | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment