1<html> 2 3<head> 4 <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script> 5 <script> 6 function getAesString(data,key,iv){//加密 7 var key = CryptoJS.enc.Latin1.parse(key); 8 var iv = CryptoJS.enc.Latin1.parse(iv); 9 var srcs = CryptoJS.enc.Utf8.parse(data); 10 11 var encrypted = CryptoJS.AES.encrypt(srcs,key, 12 {iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}); 13 return encrypted; 14 } 15 function getDAesString(encrypted,key,iv){//解密 16 var key = CryptoJS.enc.Latin1.parse(key); 17 var iv = CryptoJS.enc.Latin1.parse(iv); 18 var decrypted = CryptoJS.AES.decrypt(encrypted,key, 19 {iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}); 20 return decrypted.toString(CryptoJS.enc.Utf8); 21 } 22 function getAES(){ //加密 23 var data = 'abcde';//明文 24 var key = 'qaz'; //密钥 25 var iv = '123456'; 26 var encrypted = getAesString(data,key,iv); //密文 27 28 // var enstr = CryptoJS.enc.Base64.stringify(encrypted.ciphertext); 29 30 console.log(encrypted.ciphertext.toString()); 31 console.log("-----------------------"); 32 33 var back0 = CryptoJS.enc.Hex.parse(encrypted.ciphertext.toString()); 34 35 console.log(back0); 36 37 var back1 = CryptoJS.enc.Base64.stringify(back0); 38 39 var back = getDAesString(back1,key,iv); 40 console.log(back); 41 } 42 getAES(); 43 </script> 44</head> 45<body> 46</body> 47</html> 48 49package com.hmp.common.util; 50 51import javax.crypto.Cipher; 52import javax.crypto.KeyGenerator; 53import javax.crypto.spec.SecretKeySpec; 54 55import org.apache.commons.codec.binary.Base64; 56import org.apache.commons.codec.binary.Hex; 57 58public class AesEncryptUtil { 59 60 //可配置到Constant中,并读取配置文件注入,16位,自己定义 61 private static final String KEY = "abcdefgabcdefg12"; 62 63 //参数分别代表 算法名称/加密模式/数据填充方式 64 private static final String ALGORITHMSTR = "AES/ECB/PKCS5Padding"; 65 66 /** 67 * 加密 68 * @param content 加密的字符串 69 * @param encryptKey key值 70 * @return 71 * @throws Exception 72 */ 73 public static String encrypt(String content, String encryptKey) throws Exception { 74 KeyGenerator kgen = KeyGenerator.getInstance("AES"); 75 kgen.init(128); 76 Cipher cipher = Cipher.getInstance(ALGORITHMSTR); 77 cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), "AES")); 78 byte[] b = cipher.doFinal(content.getBytes("utf-8")); 79 80 String hexStr = parseByte2HexStr(b); 81 82 // 采用base64算法进行转码,避免出现中文乱码 83 return hexStr; 84 85 } 86 87 /** 88 * 解密 89 * @param encryptStr 解密的字符串 90 * @param decryptKey 解密的key值 91 * @return 92 * @throws Exception 93 */ 94 public static String decrypt(String encryptStr, String decryptKey) throws Exception { 95 96 byte[] hexs = Hex.decodeHex(encryptStr); 97 String str = Base64.encodeBase64String(hexs); 98 99 KeyGenerator kgen = KeyGenerator.getInstance("AES"); 100 kgen.init(128); 101 Cipher cipher = Cipher.getInstance(ALGORITHMSTR); 102 cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), "AES")); 103 // 采用base64算法进行转码,避免出现中文乱码 104 byte[] encryptBytes = Base64.decodeBase64(str); 105 byte[] decryptBytes = cipher.doFinal(encryptBytes); 106 107 return new String(decryptBytes); 108 } 109 110 public static String encrypt(String content) throws Exception { 111 return encrypt(content, KEY); 112 } 113 public static String decrypt(String encryptStr) throws Exception { 114 return decrypt(encryptStr, KEY); 115 } 116 117 118 /**将二进制转换成16进制 119 * @param buf 120 * @return 121 */ 122 public static String parseByte2HexStr(byte buf[]) { 123 StringBuffer sb = new StringBuffer(); 124 for (int i = 0; i < buf.length; i++) { 125 String hex = Integer.toHexString(buf[i] & 0xFF); 126 if (hex.length() == 1) { 127 hex = '0' + hex; 128 } 129 sb.append(hex); 130 } 131 return sb.toString(); 132 } 133 134 /**将16进制转换为二进制 135 * @param hexStr 136 * @return 137 */ 138 public static byte[] parseHexStr2Byte(String hexStr) { 139 if (hexStr.length() < 1) 140 return null; 141 byte[] result = new byte[hexStr.length()/2]; 142 for (int i = 0;i< hexStr.length()/2; i++) { 143 int high = Integer.parseInt(hexStr.substring(i*2, i*2+1), 16); 144 int low = Integer.parseInt(hexStr.substring(i*2+1, i*2+2), 16); 145 result[i] = (byte) (high * 16 + low); 146 } 147 return result; 148 } 149 150 151 public static void main(String[] args) throws Exception { 152 153 String mw = AesEncryptUtil.encrypt("admin"); 154 155 System.out.println(mw); 156 157 System.out.println(AesEncryptUtil.decrypt(mw)); 158 159 } 160}
AES加密解密
Wesley13
2021-10-11
1757 0 0
点赞
收藏
评论区
加载中...