AES_ENCRYPT和整理问题

时间:2017-06-09 14:13:49

标签: php mysql postgresql encryption

对于一个网站,我使用一个简单的脚本将formdata存储在数据库中。数据使用AES_ENCRYPT加密,我使用的代码是:

$pdo = new PDO(
    "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME,
    DB_USER,
    DB_PASSWORD
);

$hash = SECRET_HASH;

$p = $pdo->prepare("
    INSERT INTO entries
    (firstname, lastname, email) VALUES 
    (
        AES_ENCRYPT(:firstname, '{$hash}'), 
        AES_ENCRYPT(:lastname, '{$hash}'), 
        AES_ENCRYPT(:email, '{$hash}')
    )
");

$result = $p->execute(array(
    ':firstname' => $data['firstname'],
    ':lastname' => $data['lastname'],
    ':email' => $data['email']
));

这一切都运行正常,我可以用这个解密数据:

select id, cast(aes_decrypt(firstname,'<secrethash>') as char), cast(aes_decrypt(lastname,'<secrethash>') as char), cast(aes_decrypt(email,'<secrethash>') as char) from entries

表列上的排序规则是latin1_swedish_ci。

现在另一个人正在使用他自己的数据库,即PostgreSQL而不是MySql。他测试了它,但无法解密数据。他告诉我他用utf-8作为整理。他在数据库中获得的数据类似于JcXOomXShZ7d6,而我的数据类似于:,AfbIQlº˜Y¨¹Â

问题是我的数据库中已经存在一些我们想解密的数据,所以我想知道是否有办法解密这些数据?

我不知道问题是由于PostgreSQL / MySQL还是错误的排序规则类型。我试图将数据导入我的数据库并运行查询,但这不起作用。

0 个答案:

没有答案