Add class
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user