MySQL的加密算法是一種保護敏感數據的重要方式。MySQL支持多種加密算法,如AES、DES、MD5等。
其中,AES是一種對稱密鑰加密算法,它使用相同的密鑰對數據進行加解密。在MySQL中,可以使用AES_ENCRYPT()和AES_DECRYPT()函數對數據進行加解密:
SELECT AES_ENCRYPT('hello', 'key'); -- 0x8472A3D107A904432EE00DDA9EC7B384 SELECT AES_DECRYPT(0x8472A3D107A904432EE00DDA9EC7B384, 'key'); -- hello
由于AES是一種對稱密鑰加密算法,密鑰需要在客戶端和服務器之間傳輸,因此有安全性的風險。為了解決這個問題,MySQL也支持非對稱密鑰加密算法,如RSA。
使用RSA算法對數據進行加密和解密需要一對公鑰和私鑰。在MySQL中,可以使用RSA公鑰和私鑰對數據進行加解密:
-- 生成RSA密鑰對 CREATE TABLE keypair ( privkey BLOB, pubkey BLOB ); INSERT INTO keypair(privkey,pubkey) VALUES(RSA_PRIVATE_KEY(2048), RSA_PUBLIC_KEY(2048)); -- 加密/解密數據 SELECT HEX(RSA_ENCRYPT('hello', pubkey)) FROM keypair; -- 7F46…… SELECT RSA_DECRYPT(UNHEX('7F46……'), privkey) FROM keypair; -- hello