TripleDES的加解密,如何在PHP8中实现
PHP 版本:
8.0
2. 问题描述?
TripleDES在php的加解密实现,阅读了一些相关资料,就是没有解决。这里有一段nodejs的实现代码,
const CryptoJS = require('crypto-js')
const key_hex = CryptoJS.enc.Hex.parse('1234567812345678');
const iv_hex = CryptoJS.enc.Hex.parse('0102030405060708')
function encryptPostData(data) {
const encrypted = CryptoJS.TripleDES.encrypt(data, key_hex, {
mode: CryptoJS.mode.CBC,
iv: iv_hex,
padding: CryptoJS.pad.Pkcs7
});
const enc_data = encrypted.toString();
return enc_data;
}
function decryptRetData(en_data) {
const decrypted = CryptoJS.TripleDES.decrypt({
ciphertext: CryptoJS.enc.Base64.parse(en_data)
}, key_hex, {
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
iv: iv_hex
});
const dec_data = decrypted.toString(CryptoJS.enc.Utf8);
return dec_data;
}
//加密数据(需要对象转成字符串形式)
var data = {
"username": "admin",
"password": "123456"
};
var en = encryptPostData(JSON.stringify(data));
console.log("加密数据:" + en);
var de = decryptRetData(en);
console.log("解密数据:" + de);
3. 您期望得到的结果?
允许js得到下方的结果
D:\dev\nodejs\test>node 2.js
加密数据:feokR8VEtB9jmkigSvUB5dcp1vX/FTsl4X9F7kptuOXVZVdcq/npQ3qxHVsjGqYU
解密数据:{"username":"admin","password":"123456"}
希望各位大大可以指点下,如果在PHP8中实现。
为了帮你,我特地去琢磨了一下JS版的源码,不容易