雜湊加密
如果資料庫儲存了敏感的資料,如銀行卡密碼,客戶資訊等,你可能想將這些資料以加密的形式儲存在資料庫中。這樣即使有人進入了你的資料庫,並看到了這些資料,也很難獲得其中的真實資訊。
在應用程式的大量資訊中,也許你只想交很小的一部分進行加密,如使用者的密碼等。這些密碼不應該以明文的形式儲存,它們應該以加密的形式儲存在資料庫中。一般情況下,大多數系統,這其中包括mysql本身都是使用雜湊演算法對敏感資料進行加密的。
雜湊加密是單向加密,也就是說,被加密的字串是無法得到原字串的。這種方法使用很有限,一般只使用在密碼驗證或其它需要驗證的地方。在比較時並不是將加密字串進行解密,而是將輸入的字串也使用同樣的方法進行加密,再和資料庫中的加密字串進行比較。這樣即使知道了演算法並得到了加密字串,也無法還原最初的字串。銀行卡密碼就是採用的這種方式進行加密。
mysql提供了4個函式用於雜湊加密:password, encrypt, sha1和md5。下面讓我們試一試這4個函式,看看會得到什麼結果。我們以加密字串"pa55word"為例進行說明:
讓我們先來看看md5函式
select md5(『pa55word『);
| md5(『pa55word『) |
| a17a41337551d6542fd005e18b43afd4 |
1 row in set (0.13 sec)
下面是password函式
select password(『pa55word『);
| password(『pa55word『) |
| 1d35c6556b8cab45 |
1 row in set (0.00 sec)
下面是encrypt函式
select encrypt(『pa55word『);
| encrypt(『pa55word『) |
| up2ecb0hdj25a |
1 row in set (0.17 sec)
上面的每個函式都返回了乙個加密後的字串。為了區分加密字串的大小寫,最好在使用encrypt生成加密字串時,將這個字段定義成char binary型別。
insert into table1 (user, pw) value (『user1『, md5(『password1『) )
可以通過如下的語句進行密碼驗證:
select * from table1 where user = 『user1『 and pw = md5(『password1『)
mysql 雜湊查詢 Mysql
如何設計乙個關係型資料庫?分為儲存與程式例項 程式例項 儲存管理 快取機制 sql解析 日誌管理 許可權劃分 dba 容災機制 異常機制 索引管理 優化資料查詢 鎖管理 支援併發操作 儲存 檔案系統 索引模組 為什麼要使用索引?快速查詢資訊,避免全表掃瞄,降低io操作次數 什麼樣的資訊能成為索引?主...
mysql 雜湊索引 MySQL索引之雜湊索引
雜湊索引 hash index 建立在雜湊表的基礎上,它只對使用了索引中的每一列的精確查詢有用。對於每一行,儲存引擎計算出了被索引的雜湊碼 hash code 它是乙個較小的值,並且有可能和其他行的雜湊碼不同。它把雜湊碼儲存在索引中,並且儲存了乙個指向雜湊表中的每一行的指標。在mysql中,只有me...
mysql雜湊索引用途 MySQL 雜湊索引
雜湊索引基於雜湊表實現,只有精確匹配索引所有列的查詢才有效。在mysql中只有memory引擎顯示支援雜湊索引,也是memory引擎表的預設索引型別。memory引擎是支援非唯一雜湊索引的。如果多個列的雜湊值相同,索引會以鍊錶 的方式存放多個記錄指標道同乙個雜湊條目中。舉個粒子 create tab...