miladrahimi / phpcrypt
PHP项目的加密、解密和哈希工具
v5.0.0
2020-10-17 12:53 UTC
Requires
- php: >=7.1
- ext-openssl: *
Requires (Dev)
- phpunit/phpunit: 7.*
README
PhpCrypt
PhpCrypt是一个用于在PHP项目中加密、解密和哈希数据的包。它提供了一个易于使用且流畅的接口。
特性
- 使用AES和其他对称方法进行对称加密/解密。
- 使用RSA方法进行非对称加密/解密。
- 使用BCrypt方法对数据进行哈希和验证(例如密码)。
版本
- v5.x.x
- v4.x.x
- v3.x.x(不支持)
- v2.x.x(不支持)
- v1.x.x(不支持)
安装
安装Composer并在您的项目根目录中运行以下命令
composer require miladrahimi/phpcrypt "5.*"
对称加密
此示例演示如何使用AES等对称算法加密和解密数据。
use MiladRahimi\PhpCrypt\Symmetric; $symmetric = new Symmetric(); $encryptedData = $symmetric->encrypt('secret'); echo $symmetric->decrypt($encryptedData); // secret
它生成一个随机密钥,并使用aes-256-cbc
方法进行加密/解密数据。
自定义密钥
如果您已经有了密钥,您可以像这样使用自己的密钥
use MiladRahimi\PhpCrypt\Symmetric; $key = '1234567890123456'; // Set the key using the constructor $symmetric = new Symmetric($key); // Or set the key using the setter $symmetric = new Symmetric(); $symmetric->setKey($key); // And get the key using the getter $myKey = $symmetric->getKey();
generateKey
方法可以帮助您生成一个新的随机密钥。请参阅下面的片段。
use MiladRahimi\PhpCrypt\Symmetric; $key = Symmetric::generateKey();
自定义方法
默认情况下,Symmetric
类使用aes-256-cbc
方法进行加密/解密数据。您也可以使用您首选的方法。请参阅以下示例。
use MiladRahimi\PhpCrypt\Exceptions\MethodNotSupportedException; use MiladRahimi\PhpCrypt\Symmetric; try { $symmetric = new Symmetric(); $symmetric->setMethod('aria-256-ctr'); // ... } catch (MethodNotSupportedException $e) { // The method is not supported. }
支持的方法
如果您想知道安装的OpenSSL扩展支持哪些方法,请参阅下面的片段
use MiladRahimi\PhpCrypt\Symmetric; print_r(Symmetric::supportedMethods());
RSA加密
RSA是一种流行的非对称加密/解密算法。以下示例说明了如何使用RSA算法加密/解密数据。
使用私钥加密
在此示例中,我们使用私钥加密数据,并使用相关的公钥解密它。
use MiladRahimi\PhpCrypt\PrivateRsa; use MiladRahimi\PhpCrypt\PublicRsa; $privateRsa = new PrivateRsa('private_key.pem'); $publicRsa = new PublicRsa('public_key.pem'); $result = $privateRsa->encrypt('secret'); echo $publicRsa->decrypt($result); // secret
使用公钥加密
在此示例中,我们使用公钥加密数据,并使用相关的私钥解密它。
use MiladRahimi\PhpCrypt\PrivateRsa; use MiladRahimi\PhpCrypt\PublicRsa; $privateRsa = new PrivateRsa('private_key.pem'); $publicRsa = new PublicRsa('public_key.pem'); $result = $publicRsa->encrypt('secret'); echo $privateRsa->decrypt($result); // secret
Base64编码
默认情况下,PrivateRsa::encrypt()
和PublicRsa::encrypt()
方法返回的加密数据将被Base64编码。您可以根据以下示例禁用此编码。
use MiladRahimi\PhpCrypt\PrivateRsa; use MiladRahimi\PhpCrypt\PublicRsa; $privateRsa = new PrivateRsa('private_key.pem'); $publicRsa = new PublicRsa('public_key.pem'); // Disable Base64 encoding for public encryption $result = $publicRsa->encrypt('secret', false); // Disable Base64 encoding for private encryption $result = $privateRsa->encrypt('secret', false);
哈希
此示例演示如何哈希数据和验证它。
use MiladRahimi\PhpCrypt\Hash; $hash = new Hash(); $hashedPassword = $hash->make('MyPassword'); echo $hash->verify('MyPassword', $hashedPassword); // true echo $hash->verify('AnotherPassword', $hashedPassword); // false
错误处理
Symmetric
、PrivateRsa
、PublicRsa
和Hash
类可能会抛出以下异常
EncryptionException
:当它无法加密数据时。DecryptionException
:当它无法解密数据时。HashingException
:当它无法哈希数据时。MethodNotSupportedException
:当传递给Symmetric
类的加密方法不受支持时。InvalidKeyException
:当传递给PrivateRsa
或PublicRsa
类的密钥无效时。
许可证
PhpCrypt最初由Milad Rahimi创建,并采用MIT许可证发布。