1import javax.crypto.Cipher; 2import javax.crypto.spec.SecretKeySpec; 3 4import org.apache.commons.codec.binary.Base64; 5/** 6 * 7 * @author Administrator 8 * 9 */ 10public class AES { 11 12 // 加密 13 public static String Encrypt(String sSrc, String sKey) throws Exception { 14 if (sKey == null) { 15 System.out.print("Key为空null"); 16 return null; 17 } 18 // 判断Key是否为16位 19 if (sKey.length() != 16) { 20 System.out.print("Key长度不是16位"); 21 return null; 22 } 23 byte[] raw = sKey.getBytes("utf-8"); 24 SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); 25 Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"算法/模式/补码方式" 26 cipher.init(Cipher.ENCRYPT_MODE, skeySpec); 27 byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8")); 28 29 return new Base64().encodeToString(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。 30 } 31 32 // 解密 33 public static String Decrypt(String sSrc, String sKey) throws Exception { 34 try { 35 // 判断Key是否正确 36 if (sKey == null) { 37 System.out.print("Key为空null"); 38 return null; 39 } 40 // 判断Key是否为16位 41 if (sKey.length() != 16) { 42 System.out.print("Key长度不是16位"); 43 return null; 44 } 45 byte[] raw = sKey.getBytes("utf-8"); 46 SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); 47 Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); 48 cipher.init(Cipher.DECRYPT_MODE, skeySpec); 49 byte[] encrypted1 = new Base64().decode(sSrc);//先用base64解密 50 try { 51 byte[] original = cipher.doFinal(encrypted1); 52 String originalString = new String(original,"utf-8"); 53 return originalString; 54 } catch (Exception e) { 55 System.out.println(e.toString()); 56 return null; 57 } 58 } catch (Exception ex) { 59 System.out.println(ex.toString()); 60 return null; 61 } 62 } 63 64 public static void main(String[] args) throws Exception { 65 /* 66 * 此处使用AES-128-ECB加密模式,key需要为16位。 67 */ 68 String cKey = "1234567890123456"; 69 // 需要加密的字串 70 String cSrc = "www.gowhere.so"; 71 System.out.println(cSrc); 72 // 加密 73 String enString = AES.Encrypt(cSrc, cKey); 74 System.out.println("加密后的字串是:" + enString); 75 76 // 解密 77 String DeString = AES.Decrypt(enString, cKey); 78 System.out.println("解密后的字串是:" + DeString); 79 } 80}
java使用AES加密解密 AES
Wesley13
2021-10-11
1405 1 0
点赞
收藏
评论区
加载中...