loostro/cryptomute

该包已被废弃,不再维护。未建议替代包。

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

v1.0.3 2016-07-15 06:56 UTC

This package is not auto-updated.

Last update: 2022-03-01 14:14:32 UTC


README

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

1. 安装

您可以通过 Composer (packagist 有 loostro/cryptomute 包) 安装 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 密码

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

密码 IV
des-cbc
aes-128-cbc
aes-128-ecb
aes-192-cbc
aes-192-ecb
camellia-128-cbc
camellia-128-ecb
camellia-192-cbc
camellia-192-ecb

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)