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



几天前我去了"安全和登录";脸书主页。我注意到他们存储我们的设备,这样我们就可以控制哪些设备在使用我们的facebook帐户。

我想";也许我可以创造这样的东西;。

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

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

然后,当我向数据库请求获取存储的所有用户设备的数组时,它应该是这样的:

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解密字符串

最新更新