首页 > 解决方案 > 如何解密mysql db中的所有行

问题描述

希望不是一个已经回答的问题,但我希望能够在解密时选择所有内容,类似于select * from如下所示:

$sql = $conn->prepare("SELECT AES_DECRYPT(*, UNHEX('...");
$sql->execute(array("test2", "test2"));

但这似乎不起作用,会产生语法错误。还有其他方法吗?

标签: mysqlsqlaes

解决方案


我希望能够在解密时选择所有内容,就像只是做select * from

你不能那样做。AES_DECRYPT(), 和姐妹函数AES_ENCRYPT(), 对字符串而不是记录进行操作。

您确实需要为要解密的每一列重复函数调用:

select
    aes_decrypt(col1, ...) as decrypted_col1,
    aes_decrypt(col2, ...) as decrypted_col2,
    ...
from mytable

推荐阅读