【发布时间】:2016-03-21 19:25:46
【问题描述】:
我正在尝试以 BLOB 格式输出存储在表中的加密数据,但它不起作用。我使用准备好的语句插入它,当我在 mysql 命令行客户端上检查时,它显示条目已被记录,但 blob 字段为空,并且每个其他字段都有一些值。另外blob字段不能为空,因为我在建表的时候已经指定了,所以我认为命令行不能显示blob字段数据。
所以使用 php,我尝试返回 base64_encode 字段的 base64_encode 值,但没有帮助。它仍然是空的。我该怎么办?
P.S.:这不是图像,它是使用 AES-256 加密的文本。
$stmt = $conn->prepare("INSERT INTO data_store (eid, ekey, ecipher) VALUES (?, ?, ?)");
if($stmt->bind_param("sbb", $eid, $ekey, $ecipher)) {
echo "Successful";
}
// set parameters and execute
$eid=$postedID;
$ekey=$postedKey;
$ecipher=$postedCipher;
$stmt->execute();
$stmt->close();
$conn->close();
之后,我尝试返回对其进行编码的 BLOB 值,但它什么也不返回,而作为字符串的 id 的值确实显示出来了。我该如何解决这个问题?我需要对数据进行加密,然后将其解密为网站的明文。
我如何实现这一目标? 非常感谢。
P.S.:我还没有尝试解密,我需要先加密的值,所以建议先解密不会很有帮助。
表格是这样的-
+-------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+----------------+
| eid | varchar(255) | NO | PRI | NULL | |
| ekey | blob | NO | | NULL | |
| ecipher | blob | NO | | NULL | |
+-------------+---------------------+------+-----+---------+----------------+
【问题讨论】:
-
这个表的架构是什么?
SHOW CREATE TABLE将提供详细信息。您要在该列中保存多少数据? -
我上面已经给出了表格描述。
-
请记住
BLOB仅保存 65KB 的数据。如果您需要更多,您需要LONGBLOB。 -
您是否考虑过插入时 $ekey 和 $ecipher 可能为空的可能性?空字符串“”不为空。
-
不,我想我找到了问题所在。变量不为空
标签: php mysql encryption blob