加密和解密数据库中的所有数据

时间:2011-08-31 02:06:30

标签: php mysql database security

我希望能够加密我在MySQL数据库中保存的所有数据。我还需要能够使用私钥解密数据。

此数据库可由多个人访问。

我想知道为了实现这个目的,我需要使用哪些PHP功能。

谢谢

2 个答案:

答案 0 :(得分:11)

加密整个数据库是很麻烦的,除非数据库提供“透明加密”,Oracle数据库提供了这样的东西。使用透明加密的轻量级开源解决方案是SQLite。使用此功能,加密不直接应用于数据,但存储本身已加密。这意味着您可以照常处理数据库,并获得物理存储加密的额外好处。但不幸的是,MySQL没有提供这样的东西。

首先,为什么加密整个数据库并不是一个好主意。加密数据看起来像数据库的随机垃圾。这意味着很多负面的事情,比如

  • SELECT不再像以前那样处理您的数据,如果有的话(需要付出很多努力)
  • 索引变得非常无用
  • 数据库日志无法使用
  • ...

如果使用MySQL的内置encryption support进行加密,那么这意味着数据本身以纯文本形式发送到数据库 - 除非您使用TLS安全连接,这意味着窃听者不会关心你的加密。

因此,如果您需要加密数据,则应将其保持在最低限度,并且只加密数据的真正敏感部分,以便仍能够对其执行有效查询。如果在应用程序和数据库之间不可能建立安全的TLS连接,您还应该直接在应用程序中加密数据。

答案 1 :(得分:0)

如果您需要在数据库中加密一组客户的信用卡号(或社会保险号,税号或其他需要保密的字段),请按以下步骤操作:通过一些更好的方法:

http://www.di-mgt.com.au/cryptoCreditcard.html

相关问题