69 lines
2.4 KiB
PHP
69 lines
2.4 KiB
PHP
<?php
|
|
|
|
use phpseclib3\Crypt\Rijndael;
|
|
|
|
class CPlatosChiffrement
|
|
{
|
|
private static $cipher = MCRYPT_RIJNDAEL_128; // Algorithme utilisé pour le cryptage des blocs
|
|
//private static $key = "yY75y2kLQ"; // Clé de cryptage PROD
|
|
private static $key = "123456789"; // Clé de cryptage DEV
|
|
private static $mode = 'cbc'; // Mode opératoire (traitement des blocs)
|
|
|
|
public static function crypt($data)
|
|
{
|
|
$keyHash = md5(self::$key);
|
|
$data = mcrypt_encrypt(self::$cipher, self::getKey($keyHash), $data, self::$mode, self::getIv($keyHash));
|
|
return base64_encode($data);
|
|
}
|
|
|
|
public static function decrypt($data)
|
|
{
|
|
$keyHash = md5(self::$key);
|
|
$data = base64_decode($data);
|
|
$data = mcrypt_decrypt(self::$cipher, self::getKey($keyHash), $data, self::$mode, self::getIv($keyHash));
|
|
return rtrim($data);
|
|
}
|
|
|
|
public static function getIv($keyHash)
|
|
{
|
|
$iv = substr($keyHash, 0, mcrypt_get_block_size(self::$cipher, self::$mode));
|
|
return $iv;
|
|
}
|
|
|
|
public static function getKey($keyHash)
|
|
{
|
|
$key = substr($keyHash, 0, mcrypt_get_key_size(self::$cipher, self::$mode));
|
|
return $key;
|
|
}
|
|
|
|
|
|
private function encryptRJ256($key, $iv, $text)
|
|
{
|
|
$cipher = new Rijndael('cbc');
|
|
$cipher->setBlockLength(128);
|
|
// keys are null-padded to the closest valid size
|
|
// longer than the longest key and it's truncated
|
|
$cipher->setKeyLength(128);
|
|
$cipher->setKey($key);
|
|
// the IV defaults to all-NULLs if not explicitly defined
|
|
$cipher->setIV($iv);
|
|
$cipher->disablePadding();
|
|
$length = strlen($text);
|
|
$pad = 32 - ($length % 32);
|
|
$text = str_pad($text, $length + $pad, chr(0));
|
|
return base64_encode($cipher->encrypt($text));
|
|
}
|
|
private function decryptRJ256($key, $iv, $text)
|
|
{
|
|
$cipher = new Rijndael('cbc'); // could use CRYPT_RIJNDAEL_MODE_CBC
|
|
$cipher->setBlockLength(128);
|
|
// keys are null-padded to the closest valid size
|
|
// longer than the longest key and it's truncated
|
|
$cipher->setKeyLength(128);
|
|
$cipher->setKey($key);
|
|
// the IV defaults to all-NULLs if not explicitly defined
|
|
$cipher->setIV($iv);
|
|
$cipher->disablePadding();
|
|
return $cipher->decrypt(base64_decode($text));
|
|
}
|
|
}
|