AES前端加密后端解密

来源:互联网 发布:移动宽带看网络电视卡 编辑:程序博客网 时间:2024/06/05 16:32

欢迎阅读AES前端加密后端解密

目录

  1. 前端js加密
<script src="js/crypto-js/3.1.2/components/core.js"></script><script src="js/crypto-js/3.1.2/components/core-min.js"></script><script src="js/crypto-js/3.1.2/rollups/aes.js"></script><script src="js/crypto-js/3.1.2/components/aes-min.js"></script><script src="js/crypto-js/3.1.2/components/md5.js"></script><script src="js/crypto-js/3.1.2/components/md5-min.js"></script><script src="js/crypto-js/3.1.2/components/enc-base64.js"></script>                <script src="js/crypto-js/3.1.2/components/cipher-core.js"></script>                <script src="js/crypto-js/3.1.2/components/mode-ecb-min.js"></script><script>     function encryptFun(){        var data  = "123456";        var key= "1234567890abcdef";//key长度必须是16的倍数        var srcs  = CryptoJS.enc.Utf8.parse(data);        if(key== ""){            key= random(16);            $("#key").val(generateString);        }        var key = CryptoJS.enc.Utf8.parse(generateString);        var encryptedData = CryptoJS.AES.encrypt(srcs, key, {                mode:CryptoJS.mode.ECB,                padding: CryptoJS.pad.Pkcs7           });         //加密后结果        var encrypted = encryptedData.toString();        console.log("加密结果:" + encrypted);        return encrypted;    }    //解密    function decryptFun(message){        var decrypted = CryptoJS.AES.decrypt(message,key,{           mode : CryptoJS.mode.ECB,           padding : CryptoJS.pad.Pkcs7        });        var decrypt = CryptoJS.enc.Utf8.stringify(decrypt).toString();          console.log("解密结果:" + decrypt);        return decrypt;    }</script>

  1. 后端java解密
package cn.com.bankit.bwp.common.util;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import javax.crypto.BadPaddingException;import javax.crypto.Cipher;import javax.crypto.IllegalBlockSizeException;import javax.crypto.KeyGenerator;import javax.crypto.NoSuchPaddingException;import javax.crypto.spec.SecretKeySpec;import org.apache.commons.codec.binary.Base64;public class EncryptUtils {       private static final String KEY = "abcdefgabcdefg12";          private static final String ALGORITHMSTR = "AES/ECB/PKCS5Padding";          public static String base64Encode(byte[] bytes){              return Base64.encodeBase64String(bytes);          }          public static byte[] base64Decode(String base64Code) throws Exception{              //return new BASE64Decoder().decodeBuffer(base64Code);              return Base64.decodeBase64(base64Code.getBytes("UTF-8"));         }          public static byte[] aesEncryptToBytes(String content, String encryptKey) throws Exception {              KeyGenerator kgen = KeyGenerator.getInstance("AES");              kgen.init(128);              Cipher cipher = Cipher.getInstance(ALGORITHMSTR);              cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), "AES"));              return cipher.doFinal(content.getBytes("utf-8"));          }          public static String aesEncrypt(String content, String encryptKey) throws Exception {              return base64Encode(aesEncryptToBytes(content, encryptKey));          }          public static String aesDecryptByBytes(byte[] encryptBytes, String decryptKey) {                try {                    KeyGenerator kgen = KeyGenerator.getInstance("AES");                      kgen.init(128);                      Cipher cipher = Cipher.getInstance(ALGORITHMSTR);                      cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), "AES"));                      byte[] decryptBytes = cipher.doFinal(encryptBytes);                      return new String(decryptBytes);                } catch (NoSuchAlgorithmException e) {                    e.printStackTrace();                } catch (NoSuchPaddingException e) {                    e.printStackTrace();                } catch (InvalidKeyException e) {                    e.printStackTrace();                } catch (IllegalBlockSizeException e) {                    e.printStackTrace();                } catch (BadPaddingException e) {                    e.printStackTrace();                }              return null;        }          public static String aesDecrypt(String encryptStr, String decryptKey) throws Exception {              return aesDecryptByBytes(base64Decode(encryptStr), decryptKey);          }          /**         * 测试         *          */        public static void main(String[] args) throws Exception {            String content = "Test String么么哒";  //0gqIDaFNAAmwvv3tKsFOFf9P9m/6MWlmtB8SspgxqpWKYnELb/lXkyXm7P4sMf3e            System.out.println("加密前:" + content);              System.out.println("加密密钥和解密密钥:" + KEY);              String encrypt = aesEncrypt(content, KEY);              System.out.println(encrypt.length()+":加密后:" + encrypt);              String decrypt = aesDecrypt(encrypt, KEY);              System.out.println("解密后:" + decrypt);          }}