import crypto from 'crypto-browserify'
const hash = crypto.createHash('sha1');
hash.update(process.env.VUE_APP_EPROC_SALT);
const iv = Buffer.from(process.env.VUE_APP_EPROC_IV.split(','));
const key = hash.digest().slice(0, 16);
function encrypt(text) {
if (!text) return '';
try {
let mykey = crypto.createCipheriv('aes-128-cbc', key, iv);
return mykey.update(text, 'utf8', 'hex') + mykey.final('hex');
} catch (ex) {
return '';
}
}
function decrypt(text) {
if (!text) return '';
try {
let mykey = crypto.createDecipheriv('aes-128-cbc', key, iv);
return mykey.update(text, 'hex', 'utf8') + mykey.final('utf8');
} catch (ex) {
return '';
}
}
我可以隐藏密钥和 iv ,还是应该将加密方法更改为比我现在使用的更安全的加密方法
createCipheriv
对于单方加密很有用,通常与密码或用户提供的某种密钥一起使用。每次解密或加密时都需要提供密码。
如果您正在进行两方加密,例如从客户端到服务器或点对点,您确实需要一个公钥/私钥系统。各方将公钥发送给另一方,数据使用公钥进行加密,并在接收时使用私钥进行解密,任何其他方都无法访问该数据(绝不会通过互联网发送)。
不幸的是,crypto-js 似乎不支持公钥/私钥方法(如 RSA)。您可以使用类似 https://openpgpjs.org/