用java 加密
//加密設備資訊
public String Encrypt(String content, String strKey, String strIV) {//key值和iv值用64位轉 內容不用64位轉(坑)
byte[] bOut = null;
// 把字串明文轉換成utf-8編碼的位元組流
byte[] data = new byte[0];
try {
data = content.getBytes("UTF-8");
Key deskey = null;
BASE64Decoder d = new BASE64Decoder();
byte[] sKey = d.decodeBuffer(strKey);
DESedeKeySpec spec = new DESedeKeySpec(sKey);
SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");
deskey = keyfactory.generateSecret(spec);
Cipher cipher = Cipher.getInstance("desede" + "/CBC/PKCS5Padding");//PKCS7Padding desede"+"/CBC/ZeroPadding
byte[] b = d.decodeBuffer(strIV);
IvParameterSpec ips = new IvParameterSpec(b);
cipher.init(Cipher.ENCRYPT_MODE, deskey, ips);//ENCRYPT_MODE,加密資料 DECRYPT_MODE,解密資料
bOut = cipher.doFinal(data);
} catch (Exception e) {
e.printStackTrace();
}
BASE64Encoder encoder = new BASE64Encoder();
String str = encoder.encode(bOut);
return str;
}
用java解密
//解密得到的資料
public String deCrypt(String content, String strKey, String strIV) {
BASE64Decoder decoder = new BASE64Decoder();
String s = "";
try {
byte[] deContent = decoder.decodeBuffer(content);//內容
byte[] ivByte = decoder.decodeBuffer(strIV);//iv
byte[] bytekey = decoder.decodeBuffer(strKey);//bytekey
DESedeKeySpec spec = new DESedeKeySpec(bytekey);
SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");
Key deskey = keyfactory.generateSecret(spec);//key
Cipher cipher = Cipher.getInstance("desede" + "/CBC/PKCS5Padding");//PKCS7Padding desede"+"/CBC/ZeroPadding
IvParameterSpec ips = new IvParameterSpec(ivByte);
cipher.init(Cipher.DECRYPT_MODE, deskey, ips);//ENCRYPT_MODE,加密資料 DECRYPT_MODE,解密資料
byte[] bOut = cipher.doFinal(deContent);
s = new String(bOut);
} catch (Exception e) {
e.printStackTrace();
}
return s;
}
微信小程式解密;
dec: function() {
var keyHex = CryptoJS.enc.Base64.parse("key");
var ivHex = CryptoJS.enc.Base64.parse("iv");
var s1 = CryptoJS.enc.Base64.parse(this.data.result)
console.log(CryptoJS);
var decrypted = CryptoJS.DES.decrypt({
ciphertext: CryptoJS.enc.Utf8.parse(s1)
}, keyHex, {
iv: ivHex,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
console.log(decrypted.toString());
var s = sha1.sha1(decrypted.toString()); //
console.log(s);
return decrypted.toString(); //
}
解密后的資料和微信解密不一樣。求助大神解答
uj5u.com熱心網友回復:
用的是 google的 tripledes.js解密的。檔案太大了不傳了。轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/35525.html
標籤:微信開發
上一篇:Qt 使用QPainter繪圖的時候出現遮擋有沒有解決辦法?
下一篇:能不能送我一枚會講故事滴盆友!
