mmeyer2k / php-aes-gcm
dev-main
2024-08-20 21:13 UTC
Requires
- php: ^7.4|^8.0|^8.1|^8.2|^8.3
- ext-openssl: *
- ext-sodium: *
This package is auto-updated.
Last update: 2024-09-20 21:17:12 UTC
README
这是一个基于 ext-sodium
的紧凑且安全可靠的 AES-256 GCM 实现方案,适用于 PHP。在不支持 AES-NI
的系统上,此库将回退到使用 ext-openssl
。这两种扩展之间数据加密是兼容的。
安装
为了利用 PHP 8.2+ 中的新特性,请从主分支安装。
composer require "mmeyer2k/php-aes-gcm:dev-main"
基本用法
$key = '\+YoUr\+32\+ByTe\+BaSe64\+EnCoDeD\+kEy\+GoEs\+HeRe\+'; $msg = 'Hello World!'; $aes = new \Mmeyer2k\AesGcm\AesGcm($key); $enc = $aes->encrypt($msg); $dec = $aes->decrypt($enc); echo $dec;
密钥
此库期望使用 base64 编码的 32 字节密钥。密钥应来源于安全的随机数源,以确保最高级别的保护。
在 PHP 中
echo base64_decode(random_bytes(32));
在 BaSH 中
head -c 32 /dev/urandom | base64 -w 0 | xargs echo
其他用法
附加认证数据 (AAD)
AAD 数据是额外的认证信息,但未被加密。AAD 和密文都必须存在,才能继续解密过程。
$aes = new \Mmeyer2k\AesGcm\AesGcm($key); $aad = '...some extra information...' $enc = $aes->encrypt($msg, $aad); $dec = $aes->decrypt($enc, $aad);
本地密钥轮换
提供一个密钥轮换数组,如果主密钥无法解密密文,将尝试使用这些密钥。
$old = [ 'key 1', 'key 2', 'key 3', ]; $aes = new \Mmeyer2k\AesGcm\AesGcm($key, $old); $dec = $aes->decrypt($ciphertext);