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