我有一个网络服务(类似于在线商店),用户可以在其中保存他们的数据。我需要加密该数据,以便只有管理员和用户自己才能读取该数据。
每个经理和用户都有自己的密码存储在数据库中。
首先,我考虑过使用 RSA(公钥/私钥),但我不知道如何使用管理员和用户的不同密码访问加密数据。
顺便说一句:我可以提示用户和管理员每次尝试访问加密数据时输入他的密码(与数据库中的散列密码比较并解密安全数据)。
请帮助并原谅我糟糕的英语。提前致谢!
编辑:最简单的方法是使用硬编码的主密码进行加密/解密,但我认为这是非常非常不安全的。
EDIT2:好的,我想我知道了: 1. 生成唯一密钥 2. 使用对称加密使用来自 (1) 的唯一密钥加密数据 3. 使用用户密码加密来自 (1) 的唯一密钥并将其与用户的凭据一起存储4. 使用管理员密码加密来自 (1) 的唯一密钥,并将其与管理员凭据一起存储
现在当经理想要访问数据时,我提示他输入密码,然后从 (4) 解密哈希,从 (1) 获取唯一密钥并解密安全数据。来自用户的解密是一样的:(3)->(1)->data
所以现在的问题是让这个可供多个用户使用-> user_data/managers,哈哈
EDIT3:忘了提:用户创建一次数据,然后经理将其用于内部使用。