Skip to content

Instantly share code, notes, and snippets.

@mobynote
Last active March 12, 2018 06:23
Show Gist options
  • Save mobynote/7364ef846a9b94df1ddee2f8c051a03e to your computer and use it in GitHub Desktop.
Save mobynote/7364ef846a9b94df1ddee2f8c051a03e to your computer and use it in GitHub Desktop.
Java use AES128
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
import java.security.SecureRandom;
import java.security.Security;
public class SecureProviderTest {
@Test
public void use_jdk_aes128() throws Exception {
String source = "Hala Madrid";
// generate key
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey secretKey = keyGen.generateKey();
byte[] keyEncoded = secretKey.getEncoded();
// convert key
Key key = new SecretKeySpec(keyEncoded, "AES");
// encrypt
Cipher encryptCipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
encryptCipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptBytes = encryptCipher.doFinal(source.getBytes());
String cipherText = Base64.encodeBase64String(encryptBytes);
System.out.println("cipher text: " + cipherText);
// decrypt
Cipher decryptCipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
decryptCipher.init(Cipher.DECRYPT_MODE, key);
byte[] plainBytes = decryptCipher.doFinal(Base64.decodeBase64(cipherText));
String plainText = new String(plainBytes);
System.out.println("plain text: " + plainText);
}
@Test
public void use_bc_aes128() throws Exception {
String source = "Hala Madrid";
Security.addProvider(new BouncyCastleProvider());
// generate key
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES", "BC");
keyGenerator.init(128);
SecretKey secretKey = keyGenerator.generateKey();
byte[] keyEncoded = secretKey.getEncoded();
// convert key
Key key = new SecretKeySpec(keyEncoded, "AES");
// encrypt
Cipher encryptCipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");
encryptCipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptBytes = encryptCipher.doFinal(source.getBytes());
String cipherText = Base64.encodeBase64String(encryptBytes);
System.out.println("cipher text: " + cipherText);
// decrypt
Cipher decryptCipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");
decryptCipher.init(Cipher.DECRYPT_MODE, key);
byte[] plainBytes = decryptCipher.doFinal(Base64.decodeBase64(cipherText));
String plainText = new String(plainBytes);
System.out.println("plain text: " + plainText);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment