我只是在我的 MySQL 表格上进行基本的数据加密。我遵循了这里找到的指南 https://dev.mysql.com/doc/refman/5.6/en/encryption-functions.html#function_aes-encrypt。
但是我遇到了一个问题。虽然我知道我可以在 MySQL 查询中使用 aes_decrypt 解密数据,但我也希望php能够自行解密。
我已经让这部分工作正常了。如果 MySQL 像这样完成非常基本的 AES_ENCRYPTION
INSERT INTO tablename (dataset) VALUES (AES_ENCRYPT('testvalue','mysecretphrase'))
我可以使用 PHP 解密这个东西,就像这样。openssl_decrypt(base64_encode($dR['dataset']), 'aes-128-ecb', 'mysecretphrase')
当我使用MySQL在上面链接中提到的推荐UNHEX(SHA2('mysecretphrase',512))时,遇到了问题。
我尝试使用php的sha*函数,并确认它们都生成与MySQL的sha2()相同的字符串。
openssl_digest('mysecretphrase', 'sha512')
// AND
hash('sha512', 'mysecretphrase')
最后,为了解决mysql使用的UNHEX(),经过一些研究我发现PHP的hex2bin == unhex http://www.php.net/manual/en/function.hex2bin.php
然而,当解密数据时却没有任何结果。这就是它一直失败的地方。我感觉自己可能漏掉了些什么,但这只会返回空结果,而不是解密数据。
openssl_decrypt(base64_encode($dR['dataset']), 'aes-128-ecb', hex2bin(openssl_digest('mysecretphrase', 'sha512')))
任何帮助、指针或提示都将不胜感激。