Add class

This commit is contained in:
2023-02-10 13:02:03 +03:00
parent 2a66a52a38
commit 7fb62b9783

View File

@@ -0,0 +1,67 @@
<?php
/**
* Class HRCEncryptor
*
* For key need use Encryption::format($company->code)
*/
class HRCEncryptor
{
const IV = 'AiFFzylt4NjaOflK';
public static function format($key)
{
$reverse = 0;
$n = $key;
while ($n > 0)
{
$reverse = $reverse * 10;
$reverse = $reverse + $n%10;
$n = (int)($n/10);
}
return pow(($key + $reverse), 2);
}
public static function key($key)
{
while(strlen($key) < 32) {
$key .= $key;
}
return substr($key, 0, 32);
}
public static function encrypt($content, $key)
{
return base64_encode(openssl_encrypt($content, 'aes-256-cbc', self::key($key), OPENSSL_RAW_DATA, self::IV));
}
public static function decrypt($content, $key)
{
return openssl_decrypt(base64_decode($content), 'aes-256-cbc', self::key($key), OPENSSL_RAW_DATA, self::IV);
}
public static function sign($content, $key)
{
return md5($key . md5($content));
}
public static function check($signature, $public_key)
{
$fields = $_REQUEST;
ksort($fields);
$params = [];
foreach($fields as $key => $value) {
if($key != 'signature') {
$params[] = $key . '=' . $value;
}
}
$check = md5($public_key . md5(implode('&', $params)));
return $check == $signature;
}
}