几天前,我转到了Facebook的“安全和登录”页面。而且我注意到他们存储了我们的设备,以便我们可以控制使用我们Facebook帐户的设备。
我以为“也许我可以创建类似的东西”。
所以我创建了一个新的Node.js env并开始编码。
我的想法是,假设用户在数据库中已经有一些设备,所以我决定对其进行加密以使其更安全。
然后,当我向数据库请求获取存储的所有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
答案 0 :(得分:0)
加密和解密时需要使用相同的IV。同时,如果IV始终相同,则它是无用的。最佳做法是:
当您需要解密时: