2013-08-03 102 views
0

通常情况下,有人想要存储和加密数据,以后只有他可以使用(可读)数据。但是我想在我的MySQL数据库中加密(普通和二进制(BLOB))数据,这样有人直接访问数据库就无法读取这些数据。但在这种情况下,所有注册用户都应该能够为所有其他用户插入(加密)数据,反之亦然,所有注册用户都应该能够读取(解密)由他人插入和加密的数据。为多个用户加密/解密数据库中的内容

所以,我的问题的关键是如何建立在MySQL数据库上面的Web应用程序的用户将共享相同的密钥加密/解密数据在分贝?每个用户必须能够加密其他人可以解密的数据。

回答

0

这个问题有点抽象,也许我会错过一些重要的点,但...

至于我自己,我只想加密/在应用程序级解密。所以从数据库角度来看,加密数据只是TEXTBLOG列,具体取决于加密算法的输出。


的其他选项是使用MySQL standard encryption functions对数据进行加密而存储它们和对它们进行解密,同时访问。由于未加密的数据将通过网络传入/传出数据库服务器,因此我不太喜欢该解决方案。


这可能很明显,但请记住,您将无法搜索或对加密数据进行排序。

+0

嗨Sylvain,我的问题的关键是如何建立在MySQL数据库上的Web应用程序的用户将共享相同的密钥加密/解密数据在分贝?每个用户必须能够加密其他人可以解密的数据。 – sbrbot

+0

@sbrbot正如我试图解释,从我的角度来看,这可能是一个应用程序级别的问题。不是数据库问题。您的应用程序会在将数据发送到数据库之前对其进行编码,并在从数据库中读取数据时将其解码... –

+0

...如何做到这一点取决于您的特定加密算法和/或安全要求。如果您使用简单的共享密钥加密,加密密钥可以简单地存储在应用程序的配置文件*中。甚至被硬编码进去。如果您需要更复杂的东西,您可以向用户询问加密密钥。或者您可能依靠用户提供的证书来获取密钥。或者使用公钥基础设施。这一切都取决于*您的*特定需求。 –