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

时间:2018-01-29 13:15:56

标签: php

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

例如,我通过' 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);
    }
}
?>

error log

Database Schema

2 个答案:

答案 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