中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java實現AES方式加密

發布時間:2020-07-02 11:55:12 來源:網絡 閱讀:4479 作者:夢Scarlett 欄目:軟件技術
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);
    }
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

峡江县| 高密市| 特克斯县| 新营市| 道孚县| 莲花县| 谢通门县| 大余县| 成安县| 栾城县| 莒南县| 乳源| 景德镇市| 青神县| 南和县| 嵊州市| 托里县| 通渭县| 彩票| 丰原市| 阿勒泰市| 吉隆县| 芒康县| 阳山县| 汶上县| 宝应县| 绿春县| 北流市| 霍邱县| 红桥区| 黄龙县| 怀宁县| 沙河市| 黔江区| 晋中市| 旺苍县| 焉耆| 红安县| 晋州市| 望城县| 伊宁市|