vue 参数的简单AES加密

分享下我的AES小dome, 话不多说,直接上代码

 

1.vue环境 

vue 参数的简单AES加密

 

2.编写加密,解密工具js

/**
* 工具类
*/
import Vue from 'vue'
import CryptoJS from 'crypto-js'
// 默认的 KEY 与 IV
const KEY = CryptoJS.enc.Utf8.parse("dufy20170329java");
const IV = CryptoJS.enc.Utf8.parse("dufy20170329java");

export default {//加密
  encrypt(word, keyStr, ivStr){
    let key = KEY
    let iv = IV

    if(keyStr&&ivStr){
      console.log('----自定义---key,iv')
      key = CryptoJS.enc.Utf8.parse(keyStr);
      iv = CryptoJS.enc.Utf8.parse(ivStr);
    }
    let srcs = CryptoJS.enc.Utf8.parse(word);
    var encrypted = CryptoJS.AES.encrypt(srcs, key, {
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.ZeroPadding
    });
    return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
},

  //解密
decrypt(word, keyStr, ivStr){ let key = KEY let iv = IV if(keyStr&&ivStr){    key = CryptoJS.enc.Utf8.parse(keyStr);    iv = CryptoJS.enc.Utf8.parse(ivStr); }
  let base64 = CryptoJS.enc.Base64.parse(word);   let src = CryptoJS.enc.Base64.stringify(base64);   var decrypt = CryptoJS.AES.decrypt(src, key, {     iv: iv,     mode: CryptoJS.mode.CBC,     padding: CryptoJS.pad.ZeroPadding   }) var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); return decryptedStr.toString(); }
}

 

 

3.vue页面引用   

 import Utils from '@/encrytUtils.js'

   Utils.encrypt(this.content)

 

4.后端代码

java 代码,Aes加密解密工具类

/**
* AES 128bit 加密解密工具类
* @author dufy
*/
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

public class AesEncryptUtil {
    //使用AES-128-CBC加密模式,key需要为16位,key和iv可以相同!
    private static String KEY = "dufy20170329java";
    private static String IV = "dufy20170329java";

    /**
    * 加密方法
    * @param data  要加密的数据
    * @param key 加密key
    * @param iv 加密iv
    * @return 加密的结果
    * @throws Exception
    */
    public static String encrypt(String data, String key, String iv) throws Exception {
        try {
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");//"算法/模式/补码方式"
            int blockSize = cipher.getBlockSize();
            byte[] dataBytes = data.getBytes();
            int plaintextLength = dataBytes.length;
            if (plaintextLength % blockSize != 0) {
                plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
            }
            byte[] plaintext = new byte[plaintextLength];
            System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
            cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
            byte[] encrypted = cipher.doFinal(plaintext);
            return new Base64().encodeToString(encrypted);
        } catch (Exception e) {
            return null;
        }
    }

    /**
    * 解密方法
    * @param data 要解密的数据
    * @param key  解密key
    * @param iv 解密iv
    * @return 解密的结果
    * @throws Exception
    */

    public static String desEncrypt(String data, String key, String iv) throws Exception {
        try {
            byte[] encrypted1 = new Base64().decode(data);
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
            cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
            byte[] original = cipher.doFinal(encrypted1);
            String originalString = new String(original);
            return originalString;
        } catch (Exception e) {
            return null;
        }
    }

    /**
    * 使用默认的key和iv加密
    * @param data
    * @return
    * @throws Exception
    */
    public static String encrypt(String data) throws Exception {
        return encrypt(data, KEY, IV);
    }
/** * 使用默认的key和iv解密 * @param data * @return * @throws Exception */ public static String desEncrypt(String data) throws Exception { return desEncrypt(data, KEY, IV); } /** * 测试 */ public static void main(String args[]) throws Exception { String test = "18729990110"; String data = null; String key = "dufy20170329java"; String iv = "dufy20170329java"; data = encrypt(test, key, iv); System.out.println(data); System.out.println(desEncrypt(data, key, iv)); } }

 

 

ok分享结束,本文章参考网址

https://www.cnblogs.com/yucm/p/9124655.html,

https://www.cnblogs.com/libo0125ok/p/9224121.html

上一篇:DES加密解密


下一篇:C++中ceil、floor和round的区别