Php 使用userid生成加密密钥
我想加密存储在教师访问的数据库中的一些个人数据(与学生相关的数据,例如他们的姓名、特殊需求状态、成绩等)。我以前曾以非常基本的方式使用过Php 使用userid生成加密密钥,php,mysql,encryption,Php,Mysql,Encryption,我想加密存储在教师访问的数据库中的一些个人数据(与学生相关的数据,例如他们的姓名、特殊需求状态、成绩等)。我以前曾以非常基本的方式使用过open\u ssl\u encrypt,但我的理解水平相当初级 我想我想做的是(如果这不好,请纠正我),为每个用户使用不同的加密密钥,这样他们就不能访问彼此的数据。我将通过某种方式将主密钥(只有我知道)与用户id相结合来生成此密钥 因此,加密密钥本身并不存储在数据库中,因此数据库黑客无法解密数据。黑客必须访问我的源代码才能获得主密钥,并且知道(以及如何)将主密
open\u ssl\u encrypt
,但我的理解水平相当初级
我想我想做的是(如果这不好,请纠正我),为每个用户使用不同的加密密钥,这样他们就不能访问彼此的数据。我将通过某种方式将主密钥(只有我知道)与用户id相结合来生成此密钥
因此,加密密钥本身并不存储在数据库中,因此数据库黑客无法解密数据。黑客必须访问我的源代码才能获得主密钥,并且知道(以及如何)将主密钥与用户id结合起来
这是一个共同的解决方案吗?这明智吗?安全吗
谢谢。如果您在代码中存储某种主密钥,您实际上没有保护任何内容,因为这实际上使服务器上的数据以纯文本形式可用。以下是我的做法
唯一需要注意的是,如果许多人需要访问单个文档,那么使用他们所有的公钥加密对称密钥可能需要一段时间。但是,您似乎指出,每个文档最多需要两个人访问,因此这应该不是什么大问题。如果您在代码中存储某种主密钥,您实际上没有保护任何内容,因为这实际上使服务器上的数据以纯文本形式可用。以下是我的做法
唯一需要注意的是,如果许多人需要访问单个文档,那么使用他们所有的公钥加密对称密钥可能需要一段时间。然而,您似乎指出每个文档最多需要两个人访问,因此这应该不是什么大问题。@Mike的回答将为用户不可见的内容增加太多的复杂性。我不希望用户为了查看数据而必须记住/存储密钥;数据被加密的事实应该与我的应用程序中的数据流无关 我最终采用的解决方案是使用一个公共加密密钥,存储在服务器上,远离公共html。每个用户还拥有自己的加密密钥,存储在MySQL数据库中。这些密钥被异或以创建加密或解密其数据的密钥
用户完全看不见它,这很好。要突破这一防御,黑客必须访问服务器和MySQL数据库,并正确组合密钥。我所保护的数据没有那么敏感(不是信用卡或任何有经济价值的东西)。@Mike的回答会给用户看不见的东西增加太多的复杂性。我不希望用户为了查看数据而必须记住/存储密钥;数据被加密的事实应该与我的应用程序中的数据流无关 我最终采用的解决方案是使用一个公共加密密钥,存储在服务器上,远离公共html。每个用户还拥有自己的加密密钥,存储在MySQL数据库中。这些密钥被异或以创建加密或解密其数据的密钥
用户完全看不见它,这很好。要突破这一防御,黑客必须访问服务器和MySQL数据库,并正确组合密钥。我所保护的数据没有那么敏感(不是信用卡或任何有经济价值的东西)。我想,如果我所有的数据库都遭到黑客攻击和泄露,我想我应该保护学生的隐私。在这种情况下,只需一个加密密钥即可。使用多个键的原因是为了防止一个用户能够看到其他用户的记录,但是由于MySQL选择过滤用户ID,这应该是不可能的