Java AES加密实例
程序员文章站
2022-06-21 21:07:20
...
package com.encrypt.hello; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class AES { private final static String algorithm = "AES"; /** * BASE64解密 * * @param key * @return * @throws Exception */ public static byte[] decryptBASE64(String key) throws Exception { return (new BASE64Decoder()).decodeBuffer(key); } /** * BASE64加密 * * @param key * @return * @throws Exception */ public static String encryptBASE64(byte[] key) throws Exception { return (new BASE64Encoder()).encodeBuffer(key); } /** * 加密 * * @param data * @param rawKey * @return * @throws Exception */ public static String encrypt(String data, String rawKey) { byte[] key = rawKey.getBytes(); // Instantiate the cipher try { SecretKeySpec skeySpec = new SecretKeySpec(key, algorithm); Cipher cipher = Cipher.getInstance(algorithm); cipher.init(Cipher.ENCRYPT_MODE, skeySpec); byte[] encrypted = cipher.doFinal(data.getBytes()); return encryptBASE64(encrypted); } catch (Exception e) { // App.log.info("AES", "获取加密串出错," + e.getMessage()); return ""; } } /** * 解密 * * @param encrypted * @param rawKey * @return */ public static String decrypt(String encrypted, String rawKey) { try { byte[] tmp = decryptBASE64(encrypted); byte[] key = rawKey.getBytes(); SecretKeySpec skeySpec = new SecretKeySpec(key, algorithm); Cipher cipher = Cipher.getInstance(algorithm); cipher.init(Cipher.DECRYPT_MODE, skeySpec); byte[] decrypted = cipher.doFinal(tmp); return new String(decrypted); } catch (Exception e) { // App.log.info("AES", "获取解密串出错," + e.getMessage()); return ""; } } public static void main(String[] args) throws Exception { String data = "00"; String key = "0123456789123456"; System.out.println("密钥为:" + key); long lStart = System.currentTimeMillis(); // 加密 String encrypted = encrypt(data, key); System.out.println("原文:" + data); System.out.println("加密后:" + encrypted); long lUseTime = System.currentTimeMillis() - lStart; System.out.println("加密耗时:" + lUseTime + "毫秒"); System.out.println(); // 解密 lStart = System.currentTimeMillis(); String decrypted = decrypt(encrypted, key);// 解密串 System.out.println("解密后: " + decrypted); lUseTime = System.currentTimeMillis() - lStart; System.out.println("解密耗时:" + lUseTime + "毫秒"); } }
下一篇: 腊八粥有哪些食材组成