我将构建一个小型 Web 应用程序,它将一些加密数据存储在数据库 (sqlite) 中。出于显而易见的原因,一项必要条件是不将加密 key 与数据库文件一起保存。
因此,该方法可以是用户在登录屏幕上提供的密码,然后从中派生 key 来加密数据。当然,传输将由 SSL 保护。
问题是,由于用户的预期行为是只输入一次密码(例如,在登录时),而不是每次他单击链接时都被询问,密码必须存储在某个地方,至少是暂时的……但是,存储在哪里?
将它保存在 PHP session 变量中是个好主意吗? ...它将被写入服务器端的磁盘。
将其保留在客户端更好(或更糟)吗?丢弃 cookie,我不知道这是否可能,也许 Ajax 会有所帮助?
无论如何,您认为解决这个问题的最佳方法是什么?
谢谢。
最佳答案
您要查找的算法称为 PBKDF2 .它从密码中导出加密 key 。
您可能希望将派生 key 存储在非磁盘支持的 ram 中,例如内存缓存。
关于encryption - 使用用户提供的密码短语进行数据库加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1813993/