sop / aes-kw
AES Key Wrap算法(支持填充)的PHP库。
3.0.0
2019-05-23 10:25 UTC
Requires
- php: >=7.2
- ext-hash: *
- ext-openssl: *
Requires (Dev)
- phpunit/phpunit: ^8.1
README
AES Key Wrap(RFC 3394)算法的PHP库,支持填充(RFC 5649)。
支持128位、192位和256位的AES密钥大小。
需求
- PHP >=7.2
- openssl
- hash
安装
此库可在 Packagist 上找到。
composer require sop/aes-kw
代码示例
以下是一些简单的使用示例。为了简洁,省略了命名空间。
使用AES-128封装128位密钥
使用16字节密钥加密密钥封装16字节密钥。
$kek = '0123456789abcdef'; // 128-bit key encryption key $key = 'MySecretPassword'; // key to encrypt $algo = new AESKW128(); $ciphertext = $algo->wrap($key, $kek); echo bin2hex($ciphertext);
输出
89efdbc3501f1f5e952a4bbae1329c9f1a47b9fd61b48dee
解封装密钥
解封装上一个示例中的密钥。变量 $kek
和 $algo
相同。变量 $ciphertext
包含封装过程的输出。
$key = $algo->unwrap($ciphertext, $kek); echo $key;
输出
MySecretPassword
使用AES-192封装任意长度的密码
封装不是64位倍数的密钥需要填充。
$kek = '012345678901234567890123'; // 192-bit key encryption key $key = 'My hovercraft is full of eels.'; // passphrase to encrypt $algo = new AESKW192(); $ciphertext = $algo->wrapPad($key, $kek); echo bin2hex($ciphertext);
输出
f319811450badfe4385b5534bf26fa6f9fdcd1a593b3ae6b707f15c1015bbf3faf58619818bd8784
带有填充的解封装密钥
使用填充封装的密钥必须使用 unwrapPad
解封装。
$key = $algo->unwrapPad($ciphertext, $kek); echo $key;
输出
My hovercraft is full of eels.
许可证
本项目采用MIT许可证。