0、序言
在项目过程中,经常需要对id等数据进行加密在前端显示,后台解密查询,本文旨在解决MySQL和PHP数据交互的加解密问题。
1、MySQL
1.1、加密
执行加密函数
select HEX(AES_ENCRYPT('MyData','SecretKey'))
AES_ENCRYPT加密后是二进制,使用HEX函数转化成十六进制字符串
结果:
HEX(AES_ENCRYPT('MyData','SecretKey'))
41F580580FD9919AD31E15A1B7164654
对字段进行查询输出加密后的id:
SELECT HEX(aes_encrypt(`id`,'SecretKey')),id FROM `goods` where id=1;
结果:
HEX(aes_encrypt(`id`,'SecretKey')) id
ACFC3C2B7A9ED0474C0061A372922E63 1
1.2、解密
SELECT AES_DECRYPT(UNHEX('41F580580FD9919AD31E15A1B7164654'),'SecretKey')
结果:
AES_DECRYPT(UNHEX('41F580580FD9919AD31E15A1B7164654'),'SecretKey')
MyData
2、PHP
2.1、加密
echo bin2hex(base64_decode(openssl_encrypt('MyData','aes-128-ecb', 'SecretKey')));
执行结果:
echo openssl_decrypt(base64_encode(hex2bin('41f580580fd9919ad31e15a1b7164654')), 'aes-128-ecb', 'SecretKey');
2.2、解密
echo openssl_decrypt(base64_encode(hex2bin('41f580580fd9919ad31e15a1b7164654')), 'aes-128-ecb', 'SecretKey');
执行结果:
MyData