在許多應(yīng)用軟件中,密匙通常作為加密數(shù)據(jù)的關(guān)鍵部分來確保數(shù)據(jù)的保密性。然而,當(dāng)使用MySQL數(shù)據(jù)庫時,其不允許公開密匙這一做法。
CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20) NOT NULL, password VARCHAR(32) NOT NULL );
在上面的SQL查詢代碼中,我們創(chuàng)建了一個名叫“users”的數(shù)據(jù)表,其中包含用戶的ID,用戶名以及密碼。例如,當(dāng)用戶登錄時,他們將向MySQL數(shù)據(jù)庫提供他們的用戶名和密碼。 MySQL數(shù)據(jù)庫將使用與存儲在該數(shù)據(jù)庫中的記錄中相同的加密算法對此進(jìn)行加密,并將其與存儲在該表中的加密密碼比較。
Mysql建議開發(fā)者不要使用公開的處理實際密碼的算法。因此,使用公開密鑰的做法是不安全的,因為黑客可以通過定位該密匙來摧毀數(shù)據(jù)的完整性和保密性。更好的選擇是使用密碼散列函數(shù)來保護(hù)用戶的密碼,這意味著開發(fā)者不需要在MySQL中存儲實際密碼。相反,可以將密碼發(fā)送到安全密鑰庫中,數(shù)據(jù)庫會返回布爾值,表示提供的密碼是否匹配于該記錄的散列值.