前端有时把数据传给后端,也是需要加密的,这里介绍下des加密:
DES 加密算法为最为常见的分组加密算法。其主要思想在于数据位的置换与移位过程,通过16次的迭代加密与最终的逆置换得出最终的密文。DES 的解密方式只需按照加密的逆过程求解即可。由于DES 加密过程的算法是公开的,所以密钥K的保密就显得尤为重要,只有发送方与接收方采用相同的密钥进行加密解密才能获取明文数据。
在vue中使用DES加密解密需要使用crypto-js插件,首先下载 npm install crypto-js
加密方法如下:
/*
* message:需要加密的字符串,
* key: 密钥(加密解密密钥同一个)
*/
encryptDes (message, key = 'xxxxxxxxxxxxxxxxxxxxx') {
const keyHex = cryptoJs.enc.Utf8.parse(key)
const option = { mode: cryptoJs.mode.ECB, padding: cryptoJs.pad.Pkcs7 }
const encrypted = cryptoJs.DES.encrypt(message, keyHex, option)
return encrypted.ciphertext.toString() // 返回hex格式密文,如需返回base64格式:encrypted.toString()
}
解密方法如下:
/*
* message:需要解密的字符串,
* key: 密钥(加密解密密钥同一个)
*/
decryptDes (message, key = 'xxxxxxxxxxxxxx') {
const keyHex = cryptoJs.enc.Utf8.parse(key)
const decrypted = cryptoJs.DES.decrypt(
{
ciphertext: cryptoJs.enc.Hex.parse(message)
},// 若message是base64格式,则无需转16进制hex,直接传入message即可
keyHex,
{
mode: cryptoJs.mode.ECB,
padding: cryptoJs.pad.Pkcs7
}
)
return decrypted.toString(cryptoJs.enc.Utf8)
}