PDA

View Full Version : مشکل با openssl_decrypt در php 5.6



milad_d993
شنبه 04 بهمن 1399, 16:45 عصر
سلام دوستان
کد زیر توی نسخه 7 پی اچ پی درست کار میکنه (server.php)
صفحه client مشکل نداره
امکان بروز کردن نسخه php به 7 نیست متاسفانه
برای کار کردنش توی php5 چطور باید اصلاحش کنم؟؟
ی warning میده که تابع openssl_decrypt، پنج تا پارامتر میگیره ولی شما 7 تا پاس کردین بهش...

server.php


<?php
session_start();
$pass = $_POST['password'];

$digest = hash_pbkdf2('sha256', $_SESSION['pass_key'], base64_decode($_SESSION['pass_salt']), 10000, 0, true);
$ct = substr(base64_decode($pass), 0, - 8);
$tag = substr(base64_decode($pass), - 8);
$iv = base64_decode($_SESSION['pass_iv']);

$dt = openssl_decrypt($ct, 'aes-128-ccm', $digest, OPENSSL_RAW_DATA, $iv, $tag, '');
var_dump($dt);
?>


client.php


<?php
session_start();
$_SESSION['pass_salt'] = bin2hex(openssl_random_pseudo_bytes(32));
$_SESSION['pass_key'] = bin2hex(openssl_random_pseudo_bytes(32));
$_SESSION['pass_iv'] = bin2hex(openssl_random_pseudo_bytes(8));
?>
<!DOCTYPE html>
<html>
<head>
<script src="jquery.min.js"></script>
<script src="sjcl.js"></script>
<script>

$(document).ready(function(){
var result = sjcl.encrypt($("#key").val(),"admin@123",{salt:$("#salt").val(), mode : 'ccm', iv : $("#iv").val() });
var obj = JSON.parse(result);
$("#password").val(obj.ct);
});
</script>
</head>
<body>
<form method="post" action="server.php">
pass : <input name="password" id="password" type="password">
<input type="hidden" id="salt" value="<?= $_SESSION['pass_salt'] ?>">
<input type="hidden" id="key" value="<?= $_SESSION['pass_key'] ?>">
<input type="hidden" id="iv" value="<?= $_SESSION['pass_iv'] ?>">
<input type="submit" value="send">
</form>
</body>
</html>