--[單向加密]
-- MD5 演算法
MD5(str)
-- MySQL 密碼演算法
PASSWORD(str)
-- Unix crypt 演算法
ENCRYPT(str[,salt])
-- 安全散列演算法
SHA1(str)
SHA(str)
--[雙向加密]
-- MySQL 中的低階加解密演算法,
DECODE() -- 解密
ENCODE() -- 加密
-- 以 Advanced Encryption Standard 演算法加解密
AES_DECRYPT(crypt_str,key_str) -- 解密
AES_ENCRYPT(str,key_str)) -- 加密
-- 以 DES 演算法加解密,需要 SSL 的支援
DES_DECRYPT(crypt_str[,key_str]) -- 解密
DES_ENCRYPT(str[,{key_num|key_str}]) -- 加密
--[資料壓縮]
COMPRESS(string_to_compress) -- 壓縮
UNCOMPRESS(string_to_uncompress) -- 解壓縮
UNCOMPRESSED_LENGTH(compressed_string) -- 回傳壓縮前的字串長度
對於 key_str 的設定建議使用 MySQL 變數處理
-- 在 MySQL 中設定金鑰變數
SELECT @key:='sfdgsjhgjgsdfsg'
-- 在查詢資料時可以使用金鑰變數,這樣就可以不用在程式中傳遞金鑰了
-- 在程式撰寫時看起來也比較簡潔
SELECT
`Id`,
AES_DECRYPT(`Name`,@key)AS`Name`,
AES_DECRYPT(`Email`,@key)AS`Email`
FROM `system_uesr`
對於加密過的資料必須存放在二進位( BLOB )的欄位格式中,詳細的型態格式請察看10.5. Data Type Storage Requirements
類型 | 大小(單位:字節) |
TinyBlob | 最大 255 |
Blob | 最大 65K |
MediumBlob | 最大 16M |
LongBlob | 最大 4G |
參考來源:
MySQL 5.1 Reference Manual :: 11.11.2 Encryption and Compression Functions
0 回應:
張貼留言