encryption - 为加密生成密码
问题描述
我正在使用 AES 128 位加密算法(对称加密算法)加密一些数据。
我面临的问题是生成密钥?因为我有多个用户,我不想在用户之间共享公用密钥。
是否有可能以一种并非所有人都通用的方式生成密码短语,并且可以将其传递给 AES 以解密/加密相同的数据?
示例:假设我有一张包含员工及其薪水的表格。我想用 AES 加密来加密员工的薪水栏。
现在,当 HR 授权的人想要查看 Employee 的薪水时,他们可以查看,但他们应该有自己的 Key(而不是 common Key)。
解决方案
一种可能的解决方案是为每个用户创建一个主密钥的加密版本。
所以你会:
- 使用“主密钥”加密您的数据
- 使用“个人密钥”(每个用户一个)加密您的“主密钥”
然后,当用户提供其个人密钥时,您可以使用它来解密存储和加密的主密钥,然后使用它来解密数据。通过这种方式,数据的加密可以始终使用相同的密钥完成,并且您可以使用个人密钥来控制访问。
这假设虽然主密钥和加密数据永远不会离开服务器,但您必须在服务器上解密并将未加密的数据发送给用户(但当然为此使用安全线路,以防窃听)。
如果您想将数据发送给加密的用户,则无法执行此操作。
推荐阅读
- python - 如何在 matplotlib 配置文件中定义次要刻度的数量
- sql - SQL - 来自另一个表的 WHERE 条件
- api - 空手道加特林报告汇总
- javascript - 有没有办法在无头浏览器中控制鼠标滚轮
- python - Pandas DataFrame 替换不适用于 inplace=True
- momentjs - momentjs 格式返回 0000-00-00
- amcharts - amCharts 4:如何处理实际差距?
- python - 烧瓶页面未打开
- operating-system - 什么是 CPU 调度程序?
- msbuild - AppendTargetFrameworkToOutputPath 在 .targets 文件中失败