php-шифрует сравнение двух данных - PullRequest
0 голосов
/ 07 мая 2018

Я все еще новичок и новый кодер в шифровании данных в php, у меня есть данные, зашифрованные с помощью iv в базе данных, теперь проблема в том, что когда пользователь пытается искать эти данные, я сравниваю введенные им данные к данным базы данных в формате SQL вроде WHERE tbl_column = "user_input". Есть ли лучший способ сравнить две данные (проверка простых данных с зашифрованными данными) вот мой код.

<?php
$input = 'sample';

$key = "secretkey";
$secretMethod = 'AES-256-CBC';
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

echo $database_data = openssl_encrypt('sample', $secretMethod, $key, 0, $iv);

echo $data = $iv.$emessage;

$iv = substr($data, 0, $iv_size);

echo '<br/>Decrypted: '.openssl_decrypt(substr($data, $iv_size), $umethod, $key, 0, $iv);

if($data == $input) {
    echo 'equal';
} else {
    echo 'not-equal';
}

?>

1 Ответ

0 голосов
/ 07 мая 2018

я работаю с этим решением для шифрования / дешифрования 1- шифрование:

function crypt_val($val){
      $token = $val;
      $enc_method = 'AES-128-CTR';
      $enc_key = openssl_digest(gethostname() . "|" . $key, 'SHA256', true);
      $enc_iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($enc_method));
      $crypted_token = openssl_encrypt($token, $enc_method, $enc_key, 0, $enc_iv) . "::" . bin2hex($enc_iv);
      return $crypted_token;
    } 

2- расшифровка:

function decrypt_val($val){
      $crypted_token = $val;
      if(preg_match("/^(.*)::(.*)$/", $crypted_token, $regs)) {
      list(, $crypted_token, $enc_iv) = $regs;
      $enc_method = 'AES-128-CTR';
      $enc_key = openssl_digest(gethostname() . "|" . $key, 'SHA256', true);
      $decrypted_token = openssl_decrypt($crypted_token, $enc_method, $enc_key, 0, hex2bin($enc_iv));
      return $decrypted_token;
    }
  }

Первая функция зашифрует введенную строку, а вторая расшифрует ее
Обратите внимание, что $ key - ваш секретный ключ, он будет использоваться для процесса шифрования / дешифрования

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...