Skip to content

Instantly share code, notes, and snippets.

@Anass-ABEA
Last active August 26, 2021 21:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Anass-ABEA/0bab2519f458b3bc50e38f0f10b9abc3 to your computer and use it in GitHub Desktop.
Save Anass-ABEA/0bab2519f458b3bc50e38f0f10b9abc3 to your computer and use it in GitHub Desktop.
Client for the AES application
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.GCMParameterSpec;
import javax.crypto.spec.SecretKeySpec;
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 Client {
private SecretKey key;
private int KEY_SIZE = 128;
private int T_LEN = 128;
private byte[] IV;
public void init() throws Exception {
KeyGenerator generator = KeyGenerator.getInstance("AES");
generator.init(KEY_SIZE);
key = generator.generateKey();
}
public void initFromStrings(String secretKey, String IV){
key = new SecretKeySpec(decode(secretKey),"AES");
this.IV = decode(IV);
}
public String decrypt(String encryptedMessage) throws Exception {
byte[] messageInBytes = decode(encryptedMessage);
Cipher decryptionCipher = Cipher.getInstance("AES/GCM/NoPadding");
GCMParameterSpec spec = new GCMParameterSpec(T_LEN, IV);
decryptionCipher.init(Cipher.DECRYPT_MODE, key, spec);
byte[] decryptedBytes = decryptionCipher.doFinal(messageInBytes);
return new String(decryptedBytes);
}
private byte[] decode(String data) {
return Base64.getDecoder().decode(data);
}
public static void main(String[] args) {
try {
Client client = new Client();
client.initFromStrings("CHuO1Fjd8YgJqTyapibFBQ==","e3IYYJC2hxe24/EO");
String decryptedMessage = client.decrypt("mqQQF6K2GEaR0JKTd1yN58Mbs7qeYamM0xgung==");
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