#php #encryption #php-openssl
Вопрос:
Я надеялся, что кто-нибудь сможет кое-что прояснить для меня. У меня есть класс для шифрования данных, и я также использую код, чтобы превратить его в функции вместо класса. Теперь они используют одни и те же ключи и все такое, но если я что-то зашифрую с помощью класса, я не смогу расшифровать с помощью функции, почему это так? является ли это одним из способов более безопасным, чем другим?
это тот самый класс
class Encryption {
var $secret_key;
var $key;
public function __contruct(){
$this->secret_key = 'MYSECRETKEY12345654321';
// hash
$this->key = hash('sha256', $this->secret_key);
}
public function encode($value){
$output = openssl_encrypt($value, 'AES-256-CBC', $this->key, 0, substr(hash('sha256', "0ac35e3825857c810f86e384d1ac59e8"), 0, 16));
$output = base64_encode($output);
return $output;
}
public function decode($value){
return openssl_decrypt(base64_decode($value), 'AES-256-CBC', $this->key, 0, substr(hash('sha256', "0ac35e3825857c810f86e384d1ac59e8"), 0, 16));
}
}
это и есть функция
function encrypt($value)
{
$secret = 'MYSECRETKEY12345654321';
$key = hash('sha256', $secret);
$output = openssl_encrypt($value, 'AES-256-CBC', $key, 0, substr(hash('sha256', "0ac35e3825857c810f86e384d1ac59e8"), 0, 16));
$output = base64_encode($output);
return $output;
}
function decrypt($value)
{
$secret = 'MYSECRETKEY12345654321';
$key = hash('sha256', $secret);
return openssl_decrypt(base64_decode($value), 'AES-256-CBC', $key, 0, substr(hash('sha256', "0ac35e3825857c810f86e384d1ac59e8"), 0, 16));
}
пример кода
$encrypt = new Encryption();
$private = $encrypt->encode(10);
$public = decrypt($private);//this will return false;
Комментарии:
1. У вас опечатка.
__contruct
должно быть__construct
.2. вау, это было так?! спасибо, что указали на это. Является ли один способ лучше другого?