mysql雙向加密解密方法用法詳解。本站提示廣大學習愛好者:(mysql雙向加密解密方法用法詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql雙向加密解密方法用法詳解正文
假如你應用的恰是mysql數據庫,那末你把暗碼或許其他敏感主要信息保留在運用法式裡的機遇就很年夜。掩護這些數據免受黑客或許窺測者的獲得是一個使人存眷的主要成績,由於您既不克不及讓未經受權的人員應用或許損壞運用法式,同時還要包管您的競爭優勢。榮幸的是,MySQL帶有許多設計用來供給這 品種型平安的加密函數。本文概述了個中的一些函數,並解釋了若何應用它們,和它們可以或許供給的分歧級其余平安。
雙向加密
就讓我們從最簡略的加密開端:雙向加密。在這裡,一段數據經由過程一個密鑰被加密,只可以或許由曉得這個密鑰的人來解密。MySQL有兩個函數來支撐這類類型的加密,分離叫做ENCODE()和DECODE()。上面是一個簡略的實例:
mysql> INSERT INTO users (username, password)
VALUES ('joe', ENCODE('guessme', 'abracadabra'));
Query OK, 1 row affected (0.14 sec)
個中,Joe的暗碼是guessme,它經由過程密鑰abracadabra被加密。要留意的是,加密完的成果是一個二進制字符串,以下所示:
mysql> SELECT * FROM users WHERE username='joe';
+----------+----------+
| username | password |
+----------+----------+
| joe | ??i??!? |
+----------+----------+
1 row in set (0.02 sec)
abracadabra這個密鑰關於恢復到原始的字符串相當主要。這個密鑰必需被傳遞給DECODE()函數,以取得原始的、未加密的暗碼。上面就是它的應用辦法:
mysql> SELECT DECODE(password, 'abracadabra')
FROM users WHERE username='joe';
+---------------------------------+
| DECODE(password, 'abracadabra') |
+---------------------------------+
| guessme |
+---------------------------------+
1 row in set (0.00 sec)
應當很輕易就看到它在Web運用法式裡是若何運轉的——在驗證用戶登錄的時刻,DECODE()會用網站公用的密鑰解開保留在數據庫裡的暗碼,並和用戶輸出的內容停止比較。假定您把PHP用作本身的劇本說話,那末可以像上面如許停止查詢:
<?php
$query = "SELECT COUNT(*) FROM users WHERE
username='$inputUser' AND DECODE(password,
'abracadabra') = '$inputPass'";
?>
留意:固然ENCODE()和DECODE()這兩個函數可以或許知足年夜多半的請求,然則有的時刻您願望應用強度更高的加密手腕。在這類情形下,您可使用AES_ENCRYPT()和AES_DECRYPT()函數,它們的任務方法是雷同的,然則加密強度更高。