AES加密(適用於java 和.net)

來源:互聯網
上載者:User

標籤:isnull   utils   digest   encoding   utf-8   base64   blog   trace   try   

java代碼

 

    private static final String defaultCharset = "UTF-8";    private static final String KEY_AES = "AES";    private static final String KEY_MD5 = "MD5";    public static final String key = "test";     public static String encrypt(String data, String key) {        return doAES(data, key, Cipher.ENCRYPT_MODE);    }     /**     * 加解密     *     * @param data     * @param key     * @param mode     * @return     */    private static String doAES(String data, String key, int mode) {        try {            if (StringUtils.isBlank(data) || StringUtils.isBlank(key)) {                return null;            }            boolean encrypt = mode == Cipher.ENCRYPT_MODE;            byte[] content;            if (encrypt) {                content = data.getBytes(defaultCharset);            } else {                content = Base64.decodeBase64(data.getBytes(defaultCharset));            }            // 建立密鑰            SecretKeySpec keySpec = new SecretKeySpec(md5Digest.digest(key.getBytes(defaultCharset)), KEY_AES);            // 建立密碼器            Cipher cipher = Cipher.getInstance(KEY_AES);            // 初始化            cipher.init(mode, keySpec);            byte[] result = cipher.doFinal(content);            if (encrypt) {                return new String(Base64.encodeBase64(result));            } else {                return new String(result, defaultCharset);            }        } catch (Exception e) {            System.err.println("AES密文處理異常" + e);            e.printStackTrace();                    }        return null;    }

 

 

對應的.Net代碼:

 

public static string AesEncrypt(string str, string key)        {            //秘鑰取md5            MD5 md5 = new MD5CryptoServiceProvider();            byte[] t = md5.ComputeHash(Encoding.UTF8.GetBytes(key));            if (string.IsNullOrEmpty(str)) return null;            Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);            RijndaelManaged rm = new RijndaelManaged            {                Key = t,                Mode = CipherMode.ECB,                Padding = PaddingMode.PKCS7            };            ICryptoTransform cTransform = rm.CreateEncryptor();            Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);            return Convert.ToBase64String(resultArray, 0, resultArray.Length);        }        public static string AesDecrypt(string str, string key)        {            if (string.IsNullOrEmpty(str)) return null;            MD5 md5 = new MD5CryptoServiceProvider();            byte[] t = md5.ComputeHash(Encoding.UTF8.GetBytes(key));            Byte[] toEncryptArray = Convert.FromBase64String(str);            RijndaelManaged rm = new RijndaelManaged            {                Key = t,                Mode = CipherMode.ECB,                Padding = PaddingMode.PKCS7            };            ICryptoTransform cTransform = rm.CreateDecryptor();            Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);            return Encoding.UTF8.GetString(resultArray);        }

 

AES加密(適用於java 和.net)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.