我正在将字符串传递给解密函数。我需要解密十六进制格式的字符串。
例如,我通过' 8AEBB779B8564E84F8F22541DDB098D00F194D0530BF7540'从数据库中作为字符串。
我对下面的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);
}
}
?>
答案 0 :(得分:2)
foreach($data as $str)
函数中的循环遍历您找到的所有行:
$str
此处while
是此前$input=hex2bin($str);
循环中的一行,即数组。
所以而不是:
$input=hex2bin($str['encrypted_data']);
你需要:
DELETE * from tblapps
LEFT JOIN tblapps2 ON tblapps.app_id = tblapps2.app_id
LEFT JOIN tblapps3 ON tblapps.app_id = tblapps3.app_id
LEFT JOIN payments ON tblapps.app_id = payments.app_id
WHERE
tblapps.app_id = 'EVISA2505545524'
即使您只检索1列,一行仍然是一个数组。
答案 1 :(得分:1)
问题是hex2bin()
没有将字符串转换为十六进制。
您应该使用base_convert()
代替。
代码应该是这样的:
base_convert($str, 16, 10);
16
是当前基础的字符串,而10
是转换所需的基础。
更多信息:http://php.net/manual/en/function.base-convert.php http://php.net/manual/en/function.hex2bin.php