public class JiaJieMiUtils { public static final String KEY="12345bcdefabcdef"; public static void main(String[] args) throws Exception { String message = "Hello, world!"; System.out.println("Message: " + message); byte[] encrypt = encrypt(KEY.getBytes("UTF-8"), message.getBytes("UTF-8")); System.out.println("密文:"+Base64.getEncoder().encodeToString(encrypt)); byte[] decrypt = decrypt(KEY.getBytes(), encrypt); System.out.println("明文:"+new String(decrypt,"UTF-8")); } public static byte[] encrypt(byte[] key, byte[] input) throws GeneralSecurityException { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); SecureRandom sr = SecureRandom.getInstanceStrong(); byte[] iv = sr.generateSeed(16); IvParameterSpec ivps = new IvParameterSpec(iv); cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivps); byte[] data = cipher.doFinal(input); return join(iv, data); } public static byte[] decrypt(byte[] key, byte[] input) throws GeneralSecurityException { byte[] iv = new byte[16]; byte[] data = new byte[input.length - 16]; System.arraycopy(input, 0, iv, 0, 16); System.arraycopy(input, 16, data, 0, data.length); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); IvParameterSpec ivps = new IvParameterSpec(iv); cipher.init(Cipher.DECRYPT_MODE, keySpec, ivps); return cipher.doFinal(data); } public static byte[] join(byte[] bs1, byte[] bs2) { byte[] r = new byte[bs1.length + bs2.length]; System.arraycopy(bs1, 0, r, 0, bs1.length); System.arraycopy(bs2, 0, r, bs1.length, bs2.length); return r; } }
历史新知