Javascript Node.js-解密加密字符串数组

Javascript Node.js-解密加密字符串数组,javascript,node.js,Javascript,Node.js,几天前,我去了facebook的“安全和登录”页面。我注意到他们存储我们的设备,以便我们可以控制哪些设备正在使用我们的facebook帐户 我想“也许我可以创造这样的东西” 因此,我创建了一个新的Node.js env并开始编码 我的想法是,假设用户在数据库中已经有一些设备,所以我决定对它们进行加密以确保安全 然后,当我请求数据库获取存储的所有用户_设备的数组时,它应该如下所示: const user_devices = [ "972f2e0f09e944af2a51aae0608

几天前,我去了facebook的“安全和登录”页面。我注意到他们存储我们的设备,以便我们可以控制哪些设备正在使用我们的facebook帐户

我想“也许我可以创造这样的东西”

因此,我创建了一个新的Node.js env并开始编码

我的想法是,假设用户在数据库中已经有一些设备,所以我决定对它们进行加密以确保安全

然后,当我请求数据库获取存储的所有用户_设备的数组时,它应该如下所示:

const user_devices = [
  "972f2e0f09e944af2a51aae0608af08b",
  "1046f21afeda72b832a06dbcb3c713d5",
  "98905cfb376ceea05026cca6d46a660e"
];
const user_devices = [
      "127.0.0.1",
      "127.0.0.2",
      "127.0.0.3"
    ];
然后我想做一个foreach循环来解密它们,使它们看起来像这样:

const user_devices = [
  "972f2e0f09e944af2a51aae0608af08b",
  "1046f21afeda72b832a06dbcb3c713d5",
  "98905cfb376ceea05026cca6d46a660e"
];
const user_devices = [
      "127.0.0.1",
      "127.0.0.2",
      "127.0.0.3"
    ];
然后我可以使用if语句验证当前尝试访问用户帐户的用户设备是否已保存在user_devices数组中

如果没有,我将获取试图访问该帐户的当前用户设备,并对其进行加密并将其保存到user_devices数组中


我希望你喜欢这个故事,我这样做是为了挑战我自己你需要在加密和解密时使用相同的IV。同时,如果静脉注射总是同一个,那么它是无用的。最佳做法是:

  • 每次需要加密新字符串时,创建一个新的IV
  • 将IV附加到加密字符串(可能只是连接它们)并存储结果
当您需要解密时:

  • 再次分离IV和加密字符串
  • 使用刚才分离的密钥和IV解密字符串

加密和解密都需要使用相同的IV。每次呈现页面时都会生成一个新的,因此无法解密使用前一个页面加密的任何内容。因此,加密字符串不是散列。根据定义,哈希不能被解密。能否尝试添加decipher.setAutoPadding(false);创建解密后(第15行)?@gbalduzzi哦,好的,谢谢!所以在我的IV中,我只需要将crypto.randomBytes(16)删除为字符串,对吗?就像钥匙一样?天哪,我懂了。我会尝试做一些更简单的事情。然后我将尝试生成一个不同的iv,并用加密字符串存储它。