sop/aes-kw

AES Key Wrap算法(支持填充)的PHP库。

3.0.0 2019-05-23 10:25 UTC

This package is auto-updated.

Last update: 2024-09-23 21:41:07 UTC


README

Build Status Scrutinizer Code Quality Coverage Status License

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许可证。