可以在开发工具中看到加密硬编码密钥,安全吗

问题描述 投票:0回答:1
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 '';
  }
}

 in devtools , in source scoped i can see the key and iv

我可以隐藏密钥和 iv ,还是应该将加密方法更改为比我现在使用的更安全的加密方法

cryptojs
1个回答
0
投票

createCipheriv
对于单方加密很有用,通常与密码或用户提供的某种密钥一起使用。每次解密或加密时都需要提供密码。

如果您正在进行两方加密,例如从客户端到服务器或点对点,您确实需要一个公钥/私钥系统。各方将公钥发送给另一方,数据使用公钥进行加密,并在接收时使用私钥进行解密,任何其他方都无法访问该数据(绝不会通过互联网发送)。

不幸的是,crypto-js 似乎不支持公钥/私钥方法(如 RSA)。您可以使用类似 https://openpgpjs.org/

© www.soinside.com 2019 - 2024. All rights reserved.