本文目錄一覽:
mysql數據庫密碼加密方式有幾種
MySQL數據庫的認證密碼有兩種方式,
MySQL 4.1版本之前是MySQL323加密,MySQL 4.1和之後的版本都是MySQLSHA1加密,
MySQL數據庫中自帶Old_Password(str)和Password(str)函數,它們均可以在MySQL數據庫里進行查詢,前者是MySQL323加密,後者是MySQLSHA1方式加密。
(1)以MySQL323方式加密
select old_password(‘111111’);
(2)以MySQLSHA1方式加密
select password(‘111111’);
MYSQL323加密中生成的是16位字符串,而在MySQLSHA1中生存的是41位字符串,其中*是不加入實際的密碼運算中,通過觀察在很多用戶中都攜帶了”*”,在實際破解過程中去掉”*”,也就是說MySQLSHA1加密的密碼的實際位數是40位。
如何利用MySQL數據庫自帶加密函數進行加密
首先,先介紹下加密函數,PASSWORD(string)函數可以對字符串string進行加密,代碼如下:
SELECT PASSWORD(‘you’);
如下圖所示:
執行第一步的SQL語句,查詢結果是一串字符串,並且PASSWORD(string)函數加密是不可逆轉,
如下圖所示:
另外一個加密函數MD5(string),主要針對普通的數據進行加密,代碼如下:
SELECT MD5(‘hai’);
如下圖所示:
最後一個加密函數ENCODE(string,pass),可以使用字符串pass來加密字符串string。首先要創建一個數據庫表t_pass_info,代碼如下:
CREATE TABLE t_pass_info(
id int(10),
pass_info blob
);
如下圖所示:
然後,向這個數據庫表插入一條數據,代碼如下:
INSERT INTO t_pass_info(id,pass_info) VALUES
(1,ENCODE(‘dong’,’bb’));
如下圖所示:
6
查看插入數據庫表t_pass_info記錄,代碼如下:
SELECT * FROM
t_pass_info;
如下圖所示:
7
MySQL自帶還有一個解密函數DECODE(str,pass_str),可以使用字符串pass_str來為str解密,代碼如下:
SELECT DECODE(ENCODE(‘dong’,’aa’),’aa’);
如下圖所示:
數據庫加密的方式有哪幾種?
數據庫加密的方式從最早到現在有4種技術,首先是前置代理加密技術,該技術的思路是在數據庫之前增加一道安全代理服務,所有訪問數據庫的行為都必須經過該安全代理服務,在此服務中實現如數據加解密、存取控制等安全策略,安全代理服務通過數據庫的訪問接口實現數據存儲。安全代理服務存在於客戶端應用與數據庫存儲引擎之間,負責完成數據的加解密工作,加密數據存儲在安全代理服務中。
然後是應用加密技術,該技術是應用系統通過加密API對敏感數據進行加密,將加密數據存儲到數據庫的底層文件中;在進行數據檢索時,將密文數據取回到客戶端,再進行解密,應用系統自行管理密鑰體系。
其次是文件系統加解密技術,該技術不與數據庫自身原理融合,只是對數據存儲的載體從操作系統或文件系統層面進行加解密。這種技術通過在操作系統中植入具有一定入侵性的“鉤子”進程,在數據存儲文件被打開的時候進行解密動作,在數據落地的時候執行加密動作,具備基礎加解密能力的同時,能夠根據操作系統用戶或者訪問文件的進程ID進行基本的訪問權限控制。
最後後置代理技術,該技術是使用“視圖”+“觸發器”+“擴展索引”+“外部調用”的方式實現數據加密,同時保證應用完全透明。核心思想是充分利用數據庫自身提供的應用定製擴展能力,分別使用其觸發器擴展能力、索引擴展能力、自定義函數擴展能力以及視圖等技術來滿足數據存儲加密,加密後數據檢索,對應用無縫透明等核心需求。安華金和的加密技術在國內是唯一支持TDE的數據庫加密產品廠商。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/157972.html