将数据传递给解密函数(php)

将数据传递给解密函数(php),php,Php,我正在将字符串传递给解密函数。我需要解密十六进制格式的字符串 例如,我以字符串形式从数据库传递“8AEBB779B8564E84F8F22541DDB0098D00F194D0530BF7540” 我怀疑下面的php代码中是否传递了字符串 下面我附上了我的代码、错误日志以及数据库结构 <?php include "connect.php"; $query = "select encrypted_data from encrypted_data"; $rs = $dbhandle->

我正在将字符串传递给解密函数。我需要解密十六进制格式的字符串

例如,我以字符串形式从数据库传递“8AEBB779B8564E84F8F22541DDB0098D00F194D0530BF7540”

我怀疑下面的php代码中是否传递了字符串

下面我附上了我的代码、错误日志以及数据库结构

<?php
include "connect.php";

$query = "select encrypted_data from encrypted_data";
$rs = $dbhandle->query($query);

while ($row = $rs->fetch_assoc()) {
    $data['encrypted_data'] = $row;
    writeMsg($data, $dbhandle);

}

function writeMsg($data, $dbhandle) {
    $key = hex2bin('2b7e151628aed2a6abf7158908cf5f3c');
    $iv = hex2bin('f0f1f2f3f4f5f3f7f8f8fafbfdfdfefa');

    foreach ($data as $str) {
        $input = hex2bin($str);
    }
}
?>


函数中的
writeMsg()
循环迭代找到的所有行:

foreach($data as $str)
这里,
$str
循环中的一行,而在此之前是一个数组

因此,不是:

$input=hex2bin($str);
你需要:

$input=hex2bin($str['encrypted_data']);

即使只检索1列,一行仍然是数组。

问题在于
hex2bin()
不会将字符串转换为十六进制。 您应该改用
base\u convert()

代码应该是这样的:

base_convert($str, 16, 10);
其中,
16
是字符串的当前基数,
10
是所需的转换基数

更多信息,请访问:

您希望$input是什么?它将始终是最后一个字符串。您需要使用点等于连接它,即$input.=hex2bin($str);谢谢:)错误在十六进制字符串中。在传递它进行解密之前必须使用trim()。@jeroenThanks:)建议使用它,但当代码更改为$input=hex2bin($str['encrypted_data'])时,我出现了一个错误“未定义偏移量with$str”@VidathaKaruppan这就是你使用的代码吗?什么是
var_dump($str)给你?是的,这是相同的代码和变量转储($str)打印:-字符串'8AEBB779B8564E84F8F22541DB098D00F194D0530BF7540'(长度=50)@VidathaKaruppan该字符串中只有48个十六进制字符。你应该
trim()
字符串的结尾看起来有两个空格。我确信我获得了$str作为字符串,因为我可以使用所有字符串函数,除了所需的hex2bin(谢谢:),但我向您错误地传达了我的问题。我的目标是解密我拥有的十六进制字符串。为此,我需要将给定的十六进制字符串转换为正常字符串。由于php需要字符串,当十六进制字符串转换为正常字符串时,解密操作会正确进行。谢谢:)错误在十六进制字符串中。它包含空格,使用trim解决了问题