兼容 OpenSSL 的 AES 库

0.1.0 2014-06-23 22:59 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:09:40 UTC


README

执行与 OpenSSL 兼容的 AES-256 (CBC) 加密/解密,兼容 CryptoJS、Gibberish AES 以及可能的其他库。

可用于在 PHP 中加密数据并在 JavaScript 中解密,或反之。

代码来源: http://uk3.php.net/manual/en/function.openssl-decrypt.php#107210

要求

  • PHP 5.3.3 或更高版本
  • PHP 的 OpenSSL 扩展

安装

composer.json

{
    "require": {
        "legierski/aes": "0.1.*"
    }
}

加密数据

$aes = new \Legierski\AES\AES;

$encrypted = $aes->encrypt('Very sensitive data', 'password');

// OpenSSL will truncate rows longer than 76 characters, so let's wrap our encrypted data
$encryptedForOpenSSL = $aes->wrapForOpenSSL($encrypted);

解密数据

$aes = new \Legierski\AES\AES;

$decrypted = $aes->decrypt('U2FsdGVkX1+nnmEfHgoGQpwSPcT+mDZHxhr8XhEsmIvT2JAxsIzsRocO6x1PErrF', 'password');

使用 OpenSSL 加密/解密

$ echo "Very sensitive data" | openssl enc -aes-256-cbc -a -k password

$ echo "U2FsdGVkX1+nnmEfHgoGQpwSPcT+mDZHxhr8XhEsmIvT2JAxsIzsRocO6x1PErrF" | openssl enc -aes-256-cbc -a -d -k password

使用 CryptoJS 加密/解密

var encrypted = CryptoJS.AES.encrypt('Very sensitive data', 'password').toString();

var decrypted = CryptoJS.AES.decrypt('U2FsdGVkX1+nnmEfHgoGQpwSPcT+mDZHxhr8XhEsmIvT2JAxsIzsRocO6x1PErrF', 'password').toString(CryptoJS.enc.Utf8);

使用 Gibberish AES 加密/解密

var encrypted = GibberishAES.enc('Very sensitive data', 'password');

var decrypted = GibberishAES.dec('U2FsdGVkX1+nnmEfHgoGQpwSPcT+mDZHxhr8XhEsmIvT2JAxsIzsRocO6x1PErrF', 'password');

测试

运行单元测试

$ ./vendor/bin/phpunit

测试是否符合 PSR2 编码风格指南

$ ./vendor/bin/phpcs --standard=PSR2 ./src

许可

MIT 许可证 (MIT)