Würde für diesen Beitrag zum Thema Verschlüsselung folgende lauffähige (Basic-)Beispielklasse ergänzen. Habe mich zwecks "Herzeigbarkeit" absichltich für die (im Grunde nicht nötige) Anwendung von base64_...() entschieden.
Falls es dazu etwaiges zu sagen gibt, bitte - danke!
Test:
LG
Falls es dazu etwaiges zu sagen gibt, bitte - danke!
PHP-Code:
<?php
// needs activated php_mcrypt.dll extension
class Cipher
{
private $securekey, $iv;
private
$crypt_cipher = MCRYPT_RIJNDAEL_256,
$crypt_mode = MCRYPT_MODE_CBC,
$iv_source = MCRYPT_RAND;
public function __construct($passphrase)
{
$this->securekey = hash('sha256', $passphrase, true);
$this->iv = mcrypt_create_iv( mcrypt_get_iv_size($this->crypt_cipher, $this->crypt_mode), $this->iv_source );
}
public function encrypt($data)
{
return base64_encode( mcrypt_encrypt($this->crypt_cipher, $this->securekey, $data, $this->crypt_mode, $this->iv) );
}
public function decrypt($data)
{
return rtrim( mcrypt_decrypt( $this->crypt_cipher, $this->securekey, base64_decode($data), $this->crypt_mode, $this->iv ), "\0\4" );
}
}
Test:
PHP-Code:
$data = 'Der geheime Text';
$passphrase = '52s.5f4,4er';
$cipher = new Cipher($passphrase);
$crypted = $cipher->encrypt($data);
$decrypted = $cipher->decrypt($crypted);
var_dump($crypted); // qR21CymfIUv573gnlGONaZ4s/6za9D40mm4lSGTKy5c=
var_dump($decrypted); // Der geheime Text
Kommentar