繁体   English   中英

Node.js - 解密一组加密字符串

[英]Node.js - Decrypt an array of encrypted strings

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

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

所以我创建了一个新的 Node.js 环境并开始编码。

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

然后,当我向数据库发出请求以获取存储的所有 user_devices 的数组时,它应该如下所示:

const user_devices = [
  "972f2e0f09e944af2a51aae0608af08b",
  "1046f21afeda72b832a06dbcb3c713d5",
  "98905cfb376ceea05026cca6d46a660e"
];

然后我想做一个 foreach 循环来解密所有它们,使它们看起来像这样:

const user_devices = [
      "127.0.0.1",
      "127.0.0.2",
      "127.0.0.3"
    ];

然后我可以使用 if 语句来验证当前尝试访问用户帐户的用户设备是否已保存在 user_devices 数组中。

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

我希望你喜欢这个故事,我这样做是为了挑战自己😅。

但我收到了这个错误:

internal/crypto/cipher.js:164
  const ret = this._handle.final();

而且我现在不知道该怎么办😩。

这是代码: https : //codesandbox.io/s/facebook-security-login-clone-s0y71?file=/src/index.js : 148-286

加密和解密时需要使用相同的IV。 同时,如果 IV 始终相同,则它毫无用处。 最佳做法是:

  • 每次需要加密新字符串时都创建一个新的 IV
  • 将 IV 附加到加密字符串(也许只是将它们连接起来)并存储结果

当您需要解密时:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM