jetlee0797/humanid

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

dev-master / 1.0.x-dev 2017-06-21 07:05 UTC

This package is not auto-updated.

Last update: 2024-09-24 17:09:04 UTC


README

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

1. 安装

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

{
    "require": {
        "loostro/cryptomute": "^1.0"
    }
}

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

2. 使用方法

require_once 'vendor/autoload.php';

use Cryptomute\Cryptomute;

$cryptomute = new Cryptomute(
    'aes-128-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 (string) 要加密的输入数据
  • $base (int) 输入数据基数,接受值为2(二进制)、10(十进制)或16(十六进制)
  • $pad (bool) 是否将输出左填充以匹配 $maxValue 的长度?
  • $password (string) 加密密码
  • $iv (string) 初始化向量 - 如果密码要求则使用

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

解密数据。以下参数:

  • $cryptValue (string) 要解密的数据
  • $base (int) 输入数据基数,接受值为2(二进制)、10(十进制)或16(十六进制)
  • $pad (bool) 是否将输出左填充以匹配 $maxValue 的长度?
  • $password (string) 加密密码
  • $iv (string) 初始化向量 - 如果密码要求则使用

许可证

Cryptomute 使用 MIT许可证(MIT) 许可。