teakowa / cryptomute
加密数值数据(二进制、十进制、十六进制)并保留其格式(例如,16位卡号变为16位加密号)。
v1.5.0
2023-01-31 13:35 UTC
Requires
- php: ^8.0
- ext-gmp: *
- ext-openssl: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- pestphp/pest: ^1.21
- phpunit/phpunit: ^8.5 || ^9.0
README
一个小型的PHP类,通过Feistel网络实现格式保持加密。
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)的约束。