vue 加密:
const SM4 = require("gm-crypt").sm4;
export function getJMJqueryParams(params) {
if(typeof (params) == 'undefined'){
params = null;
}
let sm4Config = {
//配置sm4参数
key: "1234qwerasdf5678", //这里这个key值是跟后端要的
mode: "cbc", // 加密的方式有两种,ecb和cbc两种,也是看后端如何定义的,不过要是cbc的话下面还要加一个iv的参数,ecb不用
iv:"0987uiopmnbv1234",
cipherType: "base64"
};
let sm4 = new SM4(sm4Config);
let encryptData = sm4.encrypt(params);
return encryptData.trim();
}
java 解密:
/**
* cbc加密
* @param plainTxt
* @return
*/
public static String encrypt(String plainTxt){
String cipherTxt = "";
SymmetricCrypto sm4 = new SM4(Mode.CBC, Padding.PKCS5Padding, "abc1111111111333".getBytes(CharsetUtil.CHARSET_UTF_8), "iviviviviviviviv".getBytes(CharsetUtil.CHARSET_UTF_8));
byte[] encrypHex = sm4.encrypt(plainTxt);
cipherTxt = Base64.encode(encrypHex);
return cipherTxt;
}
/**
* cbc解密
* @param cipherTxt
* @return
*/
public static String decrypt(String cipherTxt){
String plainTxt = "";
try {
SymmetricCrypto sm4 = new SM4(Mode.CBC, Padding.PKCS5Padding, "abc1111111111333".getBytes(CharsetUtil.CHARSET_UTF_8), "iviviviviviviviv".getBytes(CharsetUtil.CHARSET_UTF_8));
byte[] cipherHex = Base64.decode(cipherTxt.trim());
plainTxt = sm4.decryptStr(cipherHex, CharsetUtil.CHARSET_UTF_8);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return plainTxt;
}
测试:
public static void main(String[] argc){
String originTxt = "1631947324084";
System.out.println("原文: " + originTxt);
String cipherTxt = encrypt(originTxt);
System.out.println("密文: " + cipherTxt);
String plainTxt = decrypt(cipherTxt);
System.out.println("解密结果: " + plainTxt);
System.out.println(getGUID());
}