Jeg skrev i forbindelse med et mindre projekt en krypteringsklasse, hvor der er mulighed for at kryptere og dekryptere forskellig information.
Jeg burde nok nævne, det er ikke er optimalt, at kryptere password osv., til brugersystemet, hash dem i stedet!
Der ligger ikke nøgler ude fra scriptet og der bruges samtidige ikke besøgs-specifikke informationer, så i den forstand er det ikke super sikkert, men kan forestille mig, at det giver jer en ganske fin boilerplate.
Brug den som i har lyst
Kode: Vælg alt
<?php
class Encryption
{
/**
* A private static variable which contains a key used in the encrypt, decrypt and hash methods.
* @var string
*/
private static $key = '!@#$%^&*';
/**
* encrypt
* Create a base64-encrypted string based on an original string using mcrypt "rijndael" and CBC
* @param string $string The string to encrypt
* @return string The encrypted string
*/
public static function encrypt($string)
{
$_iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM);
$_encryptedString = base64_encode($_iv . mcrypt_encrypt(MCRYPT_RIJNDAEL_256, hash('sha256', self::$key, true), $string, MCRYPT_MODE_CBC, $_iv));
return $_encryptedString;
}
/**
* decrypt
* Decrypt an encrypted string based on self::encrypt.
* @param string $string The encrypted string
* @return string The decrypted string
*/
public static function decrypt($string)
{
$data = base64_decode($string);
$_iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC));
$_decryptedString = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, hash('sha256', self::$key, true), substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC)), MCRYPT_MODE_CBC, $_iv), "\0");
return $_decryptedString;
}
}