您好,登錄后才能下訂單哦!
import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; public class AESUtil { private static final String IV_STRING = "sdf4ddfsFD86Vdf2"; private static final String encoding = "UTF-8"; public static String encryptAES(String content, String key) throws InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, UnsupportedEncodingException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { byte[] byteContent = content.getBytes(encoding); // 注意,為了能與 iOS 統一 // 這里的 key 不可以使用 KeyGenerator、SecureRandom、SecretKey 生成 byte[] enCodeFormat = key.getBytes(encoding); SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, "AES"); byte[] initParam = IV_STRING.getBytes(encoding); IvParameterSpec ivParameterSpec = new IvParameterSpec(initParam); // 指定加密的算法、工作模式和填充方式 Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec); byte[] encryptedBytes = cipher.doFinal(byteContent); // 同樣對加密后數據進行 base64 編碼 String base64 = new Base64().encodeToString(encryptedBytes); //進行url編碼 去掉= ? & return URLEncoder.encode(base64,encoding); } public static String decryptAES(String content, String key) throws InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException, IOException { //URL解碼 content = URLDecoder.decode(content,encoding); // base64 解碼 byte[] encryptedBytes = Base64.decodeBase64(content); byte[] enCodeFormat = key.getBytes(encoding); SecretKeySpec secretKey = new SecretKeySpec(enCodeFormat, "AES"); byte[] initParam = IV_STRING.getBytes(encoding); IvParameterSpec ivParameterSpec = new IvParameterSpec(initParam); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameterSpec); byte[] result = cipher.doFinal(encryptedBytes); return new String(result, encoding); } public static void main(String[] args) throws Exception { JSONObject json = new JSONObject(); json.put("custNum", "111111"); /*json.put("name", "張三"); json.put("cityCode", "100001"); json.put("cityName", "北京市"); json.put("mobileNo", "15651876590");*/ String content = json.toJSONString(); System.out.println("加密前:" + content); String key = "djadiKJdj49dFJLd"; System.out.println("加密密鑰和解密密鑰:" + key); String encrypt = encryptAES(content, key); System.out.println("加密后:" + encrypt); String decrypt = decryptAES(encrypt , key); System.out.println("解密后:" + decrypt); } }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。