项目作者: soliphp

项目描述 :
OpenSSL-compatible AES (128, 192, or 256) CBC library for PHP, based on openssl.
高级语言: PHP
项目地址: git://github.com/soliphp/aes.git
创建时间: 2018-10-23T12:11:56Z
项目社区:https://github.com/soliphp/aes

开源协议:

下载


Soli OpenSSL Aes

基于 OpenSSL 扩展的 AES 加解密库。

  • 支持 AES-256-CBC, AES-192-CBC, AES-128-CBC
  • 兼容 LibreSSL 2.2+ 命令行
  • 兼容 OpenSSL 1.0+ 命令行
  • 查看 OpenSSL 版本 openssl version

Build Status
Coverage Status
License

安装

使用 composer 进行安装:

  1. composer require soliphp/aes

使用

  1. include __DIR__ . '/vendor/autoload.php';
  2. $aes = new \Soli\Aes();
  3. $data = 'hello world.';
  4. $secret = 'your_secret';
  5. $encrypted = $aes->encrypt($data, $secret);
  6. $decrypted = $aes->decrypt($encrypted, $secret);
  7. var_dump($decrypted);

加密数据

  1. $aes = new \Soli\Aes();
  2. $encrypted = $aes->encrypt('hello world.', 'your_secret');

解密数据

  1. $aes = new \Soli\Aes();
  2. $decrypted = $aes->decrypt('U2FsdGVkX1/mgtCqMAn6S9AKVrqjPn8NoJkysV5JPII=', 'your_secret');

256/192/128

默认使用 AES-256-CBC

  1. $aes = new \Soli\Aes();
  2. // 等同于
  3. $aes = new \Soli\Aes(256);

使用 AES-192-CBC

  1. $aes = new \Soli\Aes(192);

使用 AES-128-CBC

  1. $aes = new \Soli\Aes(128);

使用 OpenSSL 命令行加解密

加密数据:

  1. $ echo -n 'hello world.' | openssl aes-256-cbc -md md5 -base64 -pass pass:your_secret
  2. U2FsdGVkX1/mgtCqMAn6S9AKVrqjPn8NoJkysV5JPII=

解密数据:

  1. $ echo 'U2FsdGVkX1/mgtCqMAn6S9AKVrqjPn8NoJkysV5JPII=' | openssl aes-256-cbc -md md5 -d -base64 -pass pass:your_secret

注:如果命令行下加密的数据含有特殊字符,导致无法加密,使用单引号包裹,如:

  1. $ echo -n 'hello ~!@%^&*()\{}[]/?' | openssl aes-256-cbc -md md5 -base64 -pass pass:'~!@%^&*()\{}[]/?'

md5/sha256 信息摘要算法

摘自 OpenSSL sha256 HISTORY

  1. The default digest was changed from MD5 to SHA256 in OpenSSL 1.1.0 The FIPS-related options were removed in OpenSSL 1.1.0
  2. OpenSSL 1.1.0 版本中,默认信息摘要算法从 MD5 更改为 SHA256

所以在使用 OpenSSL 命令行加解密数据时务必显示指定 -md md5 参数,
以便在 OpenSSL 1.0 和 1.1 版本下执行命令时都可成功加解密。

当前项目目前只支持 md5 方式。

参考

  1. https://github.com/chmduquesne/minibackup/blob/master/samples/OpensslAES.java

测试

  1. $ cd /path/to/soliphp/aes/
  2. $ composer install
  3. $ phpunit

MIT License

MIT Public License