Шифрование данных в PHP

#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. вау, это было так?! спасибо, что указали на это. Является ли один способ лучше другого?