crypto-js加密、解密与node Crypto加解密模块的应用
2023-12-13 10:46:02
前端用crypto-js
实现加解密,node端用Crypto模块
,两者想要相同结果的话,就要保持加密密钥和加密算法一致。
crypto-js加密、解密
// DES算法
import CryptoJS from 'crypto-js'
// 16位十六进制数作为密钥(秘钥为随机生成,必须与后端保持一致!)
const SECRET_KEY = CryptoJS.enc.Utf8.parse('XXX12XXX')
// 16位十六进制数作为密钥偏移量(秘钥为随机生成,必须与后端保持一致!)
const SECRET_IV = CryptoJS.enc.Utf8.parse('XXX12XXX')
// 加密
export const encrypt = (plaintext: string): string => {
const dataHex = CryptoJS.enc.Utf8.parse(plaintext)
const encrypted = CryptoJS.DES.encrypt(dataHex, SECRET_KEY, {
iv: SECRET_IV,
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
})
return encrypted.ciphertext.toString(CryptoJS.enc.Hex).toUpperCase()
}
// 解密
export const decrypt = (encryptText: string): string => {
const encryptedHexStr = CryptoJS.enc.Hex.parse(encryptText)
const str = CryptoJS.enc.Base64.stringify(encryptedHexStr)
const decrypt = CryptoJS.DES.decrypt(str, SECRET_KEY, {
iv: SECRET_IV,
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
})
const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
return decryptedStr.toString()
}
node Crypto加解密模块
参考:
Crypto加解密模块
// des-ecb算法
const crypto = require("crypto");
//加密
function encrypt(plaintext, secret = 'XXX12XXX') {
if (typeof plaintext != 'string') {
plaintext = plaintext + '';
}
let key = Buffer.from(secret),
iv = Buffer.alloc(0);
let cipher = crypto.createCipheriv("des-ecb", key, iv);
cipher.setAutoPadding(true);
let ciph = cipher.update(plaintext, 'utf8', 'hex');
ciph += cipher.final('hex');
return ciph.toUpperCase();
}
//解密
function decrypt(encrypt_text, secret = 'XXX12XXX') {
let key = Buffer.from(secret)
const decipher = crypto.createDecipheriv('des-ecb', key, '');
let decrypted = decipher.update(encrypt_text, 'hex', 'utf8');
decrypted += decipher.final('utf8');
return decrypted;
}
文章来源:https://blog.csdn.net/qq_32886245/article/details/134857104
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!