Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在插入/更新之前加密数据,在从mysql表中选择之前解密数据?_Mysql_Sql_Encryption_Cryptography_Password Encryption - Fatal编程技术网

如何在插入/更新之前加密数据,在从mysql表中选择之前解密数据?

如何在插入/更新之前加密数据,在从mysql表中选择之前解密数据?,mysql,sql,encryption,cryptography,password-encryption,Mysql,Sql,Encryption,Cryptography,Password Encryption,我在MySQL数据库中有80个表,我想对这些表的数据进行加密,这样就没有人可以直接访问数据了 1) 我的项目中的查询数量太多,因此我无法使用AES_ENCRYPT(列名称,密钥)进行加密,并使用AES_DECRYPT(列名称,密钥)对每个查询中的数据进行解密 2) 我可以在Rest中使用数据加密,但它只加密db文件(*.ibd)。但是,数据仍然是正常的,任何用户都可以从任何工作台(MySQL工作台、SQLYG或命令行)看到真实的数据 还有其他方法可以加密和解密MySQL数据吗?或者提供以加密形式

我在MySQL数据库中有80个表,我想对这些表的数据进行加密,这样就没有人可以直接访问数据了

1) 我的项目中的查询数量太多,因此我无法使用AES_ENCRYPT(列名称,密钥)进行加密,并使用AES_DECRYPT(列名称,密钥)对每个查询中的数据进行解密

2) 我可以在Rest中使用数据加密,但它只加密db文件(*.ibd)。但是,数据仍然是正常的,任何用户都可以从任何工作台(MySQL工作台、SQLYG或命令行)看到真实的数据

还有其他方法可以加密和解密MySQL数据吗?或者提供以加密形式存储数据的功能的任何其他数据库

我使用的是MySQL版本5.7.23(如果在查询级别上使用db进行加密/解密的成本太高,那么除了不使用加密之外,您无法降低成本

2) 我不明白。如果您担心用户访问他们不应该访问的数据,那么如何限制用户访问每个表级别[1]上的数据呢?如果某些用户需要访问数据的某些部分,则可以使用视图,仅公开这些部分


[1]

正确标记!!!如果这是MySQL,为什么我会在你的问题中看到
SQLServer
标记???它们是完全不同的产品。你需要咨询安全专家,就如何处理这一问题向你提供建议,因为你在这里提出的建议只是一层模糊处理,实际上并没有使你的数据更安全。您的数据库是一种应该尽可能安全的资产,具有最大的安全设置,并且应该有最少的人可以直接访问。任何数量的AES都不能使一个松散安全的服务器神奇地安全。如果你不能锁定你的数据库,你也不能正确地保护你的密钥,所以这只是一个剧院,实际的安全性没有增加。如果你加密实际的数据库值,你的索引是无用的,你的数据库变成了二进制的,这是非常不愉快的工作。在静止状态下加密、加密备份,并且具有非常严格的访问限制,只授予严格必要的权限。