12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package com.edufound.mobile.util;
- import org.bouncycastle.util.encoders.Base64;
- import javax.crypto.Cipher;
- import javax.crypto.spec.SecretKeySpec;
- public class AesUtil {
- static final String sKey = "GfqqwfctR8gdNGUS";
- // 解密
- public static String Decrypt(String sSrc) throws Exception {
- try {
- // 判断Key是否正确
- if (sKey == null) {
- System.out.print("Key为空null");
- return null;
- }
- // 判断Key是否为16位
- if (sKey.length() != 16) {
- System.out.print("Key长度不是16位");
- return null;
- }
- byte[] raw = sKey.getBytes("utf-8");
- SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
- Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
- cipher.init(Cipher.DECRYPT_MODE, skeySpec);
- //先用base64转码
- //byte[] encrypted1 = new Base64().decode(sSrc);
- byte[] encrypted1 = Base64.decode(sSrc);
- try {
- byte[] original = cipher.doFinal(encrypted1);
- String originalString = new String(original, "utf-8");
- return originalString;
- } catch (Exception e) {
- System.out.println(e.toString());
- return null;
- }
- } catch (Exception ex) {
- System.out.println(ex.toString());
- return null;
- }
- }
- //加密
- public static String Encrypt(String sSrc) throws Exception {
- if (sKey == null) {
- System.out.print("Key为空null");
- return null;
- }
- // 判断Key是否为16位
- if (sKey.length() != 16) {
- System.out.print("Key长度不是16位");
- return null;
- }
- byte[] raw = sKey.getBytes("utf-8");
- SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
- Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"算法/模式/补码方式"
- cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
- byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));
- //此处使用BASE64做转码功能,同时能起到2次加密的作用。
- //return new Base64().encodeToString(encrypted);
- return new String(Base64.encode(encrypted));
- }
- }
|