2010-04-01 86 views
4

mysql是否提供了一种用于存储和检索加密数据的机制?我不是指密码,我的意思是真正的字符串。mysql:加密和解密数据

我想加密一个字符串,存储在mysql中,然后在稍后的日期检索解密的字符串。

所以,我知道有AES_Encrypt和解密函数。但他们要求一个关键。 (这很好),但我想知道你是否调用这些函数并使用你的用户密码作为密钥。或者其他非常简单的东西。

另外,是否有一个简单的包装AES_Encrypt &解密函数在Rails中?或者您是否需要手动构建查询?

+0

为什么你需要这种不寻常的东西? – 2010-04-01 05:10:17

+1

不想将一些数据作为纯文本存储在驱动器或数据库中。不是密码,因此标准加密和匹配不起作用。 – cbrulak 2010-04-01 05:13:08

+0

纯文本有什么问题?每个人都可以毫无问题地使用它 – 2010-04-01 05:31:27

回答

3

如果我理解你,那么你所需要的只是一种从你的(或其他)用户密码中生成AES密钥的方法?

难道你不应该问'是否有一种简单的方法来从5-20char字符串中生成AES密钥?

正如你指出的,其他工具已经就位在MySQL:http://dev.mysql.com/doc/refman/5.0/en/encryption-functions.html

而且你会发现这里this后的一些想法上SO。

5

你可以只Concat的加密功能:

select aes_encrypt('MyData',Password('MyPassword')) 

,然后再返回..

select Aes_decrypt(aes_encrypt('MyData',Password('MyPassword')) 
    , Password('MyPassword')) 
+0

如果密码即将更改,请务必重新加密原始数据。 – 2014-05-27 09:29:58

-2
$pass = $_POST['pass']; 
$sql = "INSERT INTO testperson (name,password,contact) VALUES('$name',md5('$pass'),$cont)"; 

要加密,如密码输入之前刚写的MD5。

+1

MD5不是加密算法。 *从不*使用MD5来“加密”密码。 – JJJ 2017-06-22 14:38:52