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

1.0.4 2017-06-21 09:19 UTC

This package is not auto-updated.

Last update: 2024-09-20 20:16:07 UTC


README

A small PHP class implementing Format Preserving Encryption via Feistel Network.

1. 安装

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

{
    "require": {
        "jetlee0797/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(字符串)要加密的输入数据
  • $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(字符串)初始化向量 - 如果加密需要它

许可协议

Cryptomute根据MIT许可协议(MIT)许可。