2010-04-01 81 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