Skip to content

Instantly share code, notes, and snippets.

@Anass-ABEA
Last active August 26, 2021 21:26
Show Gist options
  • Save Anass-ABEA/1540befda010673bf87ebd6e3406ff86 to your computer and use it in GitHub Desktop.
Save Anass-ABEA/1540befda010673bf87ebd6e3406ff86 to your computer and use it in GitHub Desktop.
Server or AES Encryption
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 Server {
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 encrypt(String message) throws Exception {
byte[] messageInBytes = message.getBytes();
Cipher encryptionCipher = Cipher.getInstance("AES/GCM/NoPadding");
GCMParameterSpec spec = new GCMParameterSpec(T_LEN, IV);
encryptionCipher.init(Cipher.ENCRYPT_MODE, key, spec);
byte[] encryptedBytes = encryptionCipher.doFinal(messageInBytes);
return encode(encryptedBytes);
}
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 {
Server server = new Server();
server.initFromStrings("CHuO1Fjd8YgJqTyapibFBQ==", "e3IYYJC2hxe24/EO");
String encryptedMessage = server.encrypt("TheXCoders_2");
System.err.println("Encrypted Message : " + encryptedMessage);
} catch (Exception ignored) {
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment