gpt4 book ai didi

php - 使用 PHP 和 openssl 并将其存储在 MySQL 中 - 无法解密数据

转载 作者:行者123 更新时间:2023-11-29 00:41:09 25 4
gpt4 key购买 nike

我想使用openssl_public_encrypt 来加密数据并将其存储在MySQL 数据库中。然后,当我需要数据时,我想从 MySQL 数据库中SELECT 它并使用 openssl_private_decrypt 来解密它。加密后,我使用 base64 为 MySQL 编码数据,并在解密之前再次解码数据。

这是我用来加密数据并将其INSERT 到数据库中的代码:

<?php
require_once('default.inc.php');
mysql_connect_selectdb($host,$username,$password,$database);
function encrypt($string) {
$publickey = '-----BEGIN PUBLIC KEY-----
PUBLIC KEY HERE
-----END PUBLIC KEY-----';
openssl_public_encrypt($string,$encryptedstring,$publickey);
return $encryptedstring;
}
$number = base64_encode(encrypt('1234567890123456'));
$qry = "UPDATE table SET number='$number' WHERE id='120006'";
$result = mysql_query($qry);
if (!$result) {
die(mysql_error());
}
?>

default.inc.php 文件将错误报告设置为 E_ALL,还定义了 mysql 连接变量和 mysql_connect_selectdb() 函数。它可以很好地插入数据库,并且没有输出到屏幕。

这是我用来从数据库中SELECT并解密它的代码:

<?php
require_once('default.inc.php');
mysql_connect_selectdb($host,$username,$password,$database);
$key = '-----BEGIN RSA PRIVATE KEY-----
PRIVATE KEY HERE
-----END RSA PRIVATE KEY-----';
function decrypt($string,$privatekey) {
openssl_private_decrypt($string,$decryptedstring,$privatekey);
return $decryptedstring;
}
$qry = "SELECT * FROM table WHERE id='120006'";
$result = mysql_query($qry);
if ($result) {
if (mysql_numrows($result) == '1') {
$data = mysql_fetch_assoc($result);
$number = decrypt(base64_decode($data['number']),$key);
echo 'Number: '.$number;
}
else {
echo 'no rows';
}
}
else {
die(mysql_error());
}
?>

Number: 外,屏幕上没有任何输出。我不明白为什么它不解密。我可以直接从数据库回显 $data['number'] 并且它显示为 base 64 编码数据并且我也可以在它被 base 64 解码并显示后回显数据二进制文件在我的屏幕上很好,但是当我尝试解密它时没有输出。

MySQL字段号为VARCHAR(128)(试过VARBINARYBINARYBLOB), VARCHAR 应该适用于 base64,它是一个 latin1_swedish_ci 排序规则。

任何帮助将不胜感激!谢谢!

最佳答案

我想通了。 number 列是 VARCHAR(128) 但是插入的字符串的长度是 172,因此字符串的末尾被截断离开。没有字符串的结尾,它没有正确解密并返回 NULL

关于php - 使用 PHP 和 openssl 并将其存储在 MySQL 中 - 无法解密数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12204339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com