66 行
1.6 KiB
PHP
可执行文件
66 行
1.6 KiB
PHP
可执行文件
<?php
|
|
namespace Addons\Api;
|
|
class Crypto{
|
|
/**
|
|
* 数据加密
|
|
* @param unknown $data 原始数据
|
|
* @param unknown $key 密钥
|
|
* @return string 加密数据
|
|
*/
|
|
function encrypt($data, $key)
|
|
{
|
|
$key = md5($key);
|
|
$x = 0;
|
|
$len = strlen($data);
|
|
$l = strlen($key);
|
|
for ($i = 0; $i < $len; $i++)
|
|
{
|
|
if ($x == $l)
|
|
{
|
|
$x = 0;
|
|
}
|
|
$char .= $key{$x};
|
|
$x++;
|
|
}
|
|
for ($i = 0; $i < $len; $i++)
|
|
{
|
|
$str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
|
|
}
|
|
return base64_encode($str);
|
|
}
|
|
/**
|
|
* 数据解密
|
|
* @param unknown $data 密文
|
|
* @param unknown $key 加密密钥
|
|
* @return string 原文
|
|
*/
|
|
function decrypt($data, $key)
|
|
{
|
|
$key = md5($key);
|
|
$x = 0;
|
|
$data = base64_decode($data);
|
|
$len = strlen($data);
|
|
$l = strlen($key);
|
|
for ($i = 0; $i < $len; $i++)
|
|
{
|
|
if ($x == $l)
|
|
{
|
|
$x = 0;
|
|
}
|
|
$char .= substr($key, $x, 1);
|
|
$x++;
|
|
}
|
|
for ($i = 0; $i < $len; $i++)
|
|
{
|
|
if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))
|
|
{
|
|
$str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
|
|
}
|
|
else
|
|
{
|
|
$str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
|
|
}
|
|
}
|
|
return $str;
|
|
}
|
|
} |