如何解密MySQL数据库中的所有行

问题描述

希望这不是一个已经回答的问题,但是我希望能够在解密的同时选择所有内容,就像像下面这样select * from

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

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

解决方法

我希望能够在解密的同时选择所有内容,就像进行select * from

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

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

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