【发布时间】:2017-12-05 19:25:27
【问题描述】:
我想对一些用户个人资料信息进行 AES 加密。 当用户注册时,我使用他提供的密码,如果密码长度不为 16,我将其补全为 16 位和零,以获得 AES 所需的密钥长度(16 位),然后我加密他的所有数据配置文件那把钥匙。我知道此时我的 AES 密钥将是安全的,因为除了他们自己的用户之外没有人知道它们。
当用户登录时,我用他的密码执行相同的 16 位处理并解密他的数据。我遇到的问题是密码恢复,如果用户忘记密码,数据将永远丢失。有没有更好的方法或解决这个问题的方法?
谢谢。
【问题讨论】:
-
我投票决定将此问题作为离题结束,因为这是关于密码学工程的,属于 crypto.stackexchange.com。
-
这里的另一点是您可能混淆了位和字节......另外,您的密钥派生方法不安全,因为您可能从 ascii 字节派生,只需添加零位......这减少了键空间......在这里使用更安全的东西......比如 pbkdf2
-
我会问存储配置文件信息有什么价值,如果没有人,但数据所在的人可以看到它。为什么要收集您不/永远无法使用的数据?您已经创建了只写内存。
-
你误会我了,重点是:AES 密钥的存储位置。如果我按照我的逻辑,我不需要关心存储它,唯一的问题是当用户丢失密码时,所有加密的数据都会丢失。这就是我正在寻找的解决方案。