teakowa / cryptomute

加密数值数据(二进制、十进制、十六进制)并保留其格式(例如,16位卡号变为16位加密号)。

v1.5.0 2023-01-31 13:35 UTC

README

一个小型的PHP类,通过Feistel网络实现格式保持加密。

Latest Version on Packagist PHP from Packagist LICENSE LICENSE 996.icu Total Downloads

1. 安装

您可以通过Composer安装Cryptomute(packagist有teakowa/cryptomute包)。在您的composer.json文件中使用

{
    "require": {
        "teakowa/cryptomute": "^1.4"
    }
}

然后运行:php composer.phar install。之后,您可以引入自动加载器并使用Cryptomute

2. 使用方法

use Cryptomute\Cryptomute;

$cryptomute = new Cryptomute(
    'aes-256-cbc',      // cipher
    '0123456789zxcvbn', // base key
    7,                  // number of rounds
);

$password = '0123456789qwerty';
$iv = '0123456789abcdef';

$plainValue = '2048';
$encoded = $cryptomute->encrypt($plainValue, 10, false, $password, $iv);
$decoded = $cryptomute->decrypt($encoded, 10, false, $password, $iv);

var_dump([
  'plainValue' => $plainValue,
  'encoded'    => $encoded,
  'decoded'    => $decoded,
]);
array(3) {              
  ["plainValue"]=>       
  string(4) "2048"       
  ["encoded"]=>          
  string(9) "309034283"  
  ["decoded"]=>          
  string(4) "2048"       
}                        

3. 选项

3.1 密码

密码是构造函数的第一个参数。支持的密码方法是

3.2 密钥

密钥是构造函数的第二个参数。这是所有轮密钥的基密钥。

3.3 轮数

轮数是构造函数的第三个参数。必须是大于或等于3的奇数整数。轮数越多越安全,但也会越慢。建议的值至少为7。

4. 公共方法

4.1 setValueRange($minValue, $maxValue)

设置最小值和最大值。如果结果超出范围,它将被重新加密(或重新解密),直到输出在范围内。

4.2 encrypt($plainValue, $base, $pad, $password, $iv)

加密数据。以下参数

  • $plainValue(字符串)待加密的数据
  • $base(整数)输入数据基数,接受的值是2(二进制)、10(十进制)或16(十六进制)
  • $pad(布尔值)左填充输出以匹配$maxValue的长度?
  • $password(字符串)加密密码
  • $iv(字符串)初始化向量 - 如果密码需要它

4.2 decrypt($cryptValue, $base, $pad, $password, $iv)

解密数据。以下参数

  • $cryptValue(字符串)待解密的数据
  • $base(整数)输入数据基数,接受的值是2(二进制)、10(十进制)或16(十六进制)
  • $pad(布尔值)左填充输出以匹配$maxValue的长度?
  • $password(字符串)加密密码
  • $iv(字符串)初始化向量 - 如果密码需要它

授权协议

此存储库中的代码,除非另有说明,均受反996许可协议Apache授权协议(版本2.0)的约束。