我有运行加密和解密的代码,我想从我的mysql数据库中传递值,但它不起作用
这是我的代码
<?php
require_once('koneksi.php');
$sql = "SELECT * from keamanan WHERE id='1'";
$r = mysqli_query($con,$sql);
//Membuat Array Kosong
$result = array();
while($row = mysqli_fetch_array($r)){
//Memasukkan Nama dan ID kedalam Array Kosong yang telah dibuat
array_push($result,array(
"iv"=>$row['kunci_pribadi'],
"key"=>$row['kunci_bersama'],
"token1"=>$row['token_lampu1'],
"token2"=>$row['token_lampu2'],
"token2"=>$row['token_lampu3'],
"token2"=>$row['token_lampu4'],
));
}
$json = json_encode(array('result'=>$result));
$data = json_decode($json);
class MCrypt
{
$iv;
$key;
function __construct()
{
$this->iv = $key;
$this->key = $iv;
}
function encrypt($str) {
//$key = $this->hex2bin($key);
$iv = $this->iv;
$td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);
mcrypt_generic_init($td, $this->key, $iv);
$encrypted = mcrypt_generic($td, $str);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return bin2hex($encrypted);
}
function decrypt($code) {
//$key = $this->hex2bin($key);
$code = $this->hex2bin($code);
$iv = $this->iv;
$td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);
mcrypt_generic_init($td, $this->key, $iv);
$decrypted = mdecrypt_generic($td, $code);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return utf8_encode(trim($decrypted));
}
protected function hex2bin($hexdata) {
$bindata = '';
for ($i = 0; $i < strlen($hexdata); $i += 2) {
$bindata .= chr(hexdec(substr($hexdata, $i, 2)));
}
return $bindata;
}
}
$mcrypt = new MCrypt($data->result[0]->key,$data->result[0]->iv);
#Encrypt
$encrypted = '9975e28df055c336a9b7090b03f88689';
#Decrypt
$decrypted = $mcrypt->decrypt($encrypted);
var_dump($encrypted);
var_dump($decrypted);
?>
我想念的地方?
我不知道我的脚本它仍然可以在php7中使用。
我试着配置什么错误。如果我手动编写它代码运行没有错误,但为什么我不能从我的数据库mysql传递值变量。
有谁可以帮助我?
答案 0 :(得分:0)
您班级的构造函数没有输入参数,而您在此处使用参数调用
new MCrypt($data->result[0]->key,$data->result[0]->iv);
将__construct函数更改为
function __construct($key, $iv)
{
$this->iv = $key;
$this->key = $iv;
}
此外,我建议您使用PDO进行数据库连接,这被认为更安全。也许你可以看看这个https://phpdelusions.net/pdo