paragonie / easyrsa
v0.6.0
2021-04-19 02:49 UTC
Requires
- php: ^5.6|^7|^8
- defuse/php-encryption: ^2
- paragonie/constant_time_encoding: ^1|^2
- paragonie/random_compat: >= 2
- phpseclib/phpseclib: ^2
Requires (Dev)
- phpunit/phpunit: ^5|^6|^7|^8|^9
Suggests
- ext-sodium: Libsodium offers far better cryptography than RSA can ever offer. Use libsodium instead of EasyRSA.
- paragonie/halite: A simple and secure libsodium wrapper. Consider using Halite instead of EasyRSA.
README
简单安全的 phpseclib 包装器。
重要!
为了更好的安全,您应该使用 libsodium,而不是 EasyRSA。
动机
尽管由于指数级数法攻击的进步,RSA 的长期安全性值得怀疑(最起码),但在流行的 PHP 加密库中 RSA 的实现存在许多问题,使它今天容易受到攻击。
感谢开发 phpseclib 的人,我们可以在 PHP 中使用安全的 RSA。然而,它对普通 PHP 开发者来说不够友好,无法充分发挥其潜力。因此,我们承担起提供用户友好界面的责任。
EasyRSA 是 MIT 许可协议,由 Paragon Initiative Enterprises 的安全 PHP 开发团队提供。
如何使用此库?
composer require paragonie/easyrsa
生成 RSA 密钥对
您可以使用 EasyRSA 生成 2048 位密钥(或更大)。默认大小为 2048。
<?php use ParagonIE\EasyRSA\KeyPair; $keyPair = KeyPair::generateKeyPair(4096); $secretKey = $keyPair->getPrivateKey(); $publicKey = $keyPair->getPublicKey();
获取原始密钥
<?php /** @var \ParagonIE\EasyRSA\PublicKey $publicKey */ var_dump($publicKey->getKey());
加密/解密消息
<?php use ParagonIE\EasyRSA\EasyRSA; $message = "test"; /** @var \ParagonIE\EasyRSA\PublicKey $publicKey */ /** @var \ParagonIE\EasyRSA\PrivateKey $secretKey */ $ciphertext = EasyRSA::encrypt($message, $publicKey); $plaintext = EasyRSA::decrypt($ciphertext, $secretKey);
签名/验证消息
<?php use ParagonIE\EasyRSA\EasyRSA; $message = "test"; /** @var \ParagonIE\EasyRSA\PublicKey $publicKey */ /** @var \ParagonIE\EasyRSA\PrivateKey $secretKey */ $signature = EasyRSA::sign($message, $secretKey); if (EasyRSA::verify($message, $signature, $publicKey)) { // Signature is valid! }
兼容性
EasyRSA 只与自身兼容。它不与 OpenGPG(GnuPG、Mailvelope 等)兼容。您需要使用 GPG-Mailer。
它内部是如何工作的?
- 加密(KEM+DEM)
- 生成一个随机秘密值
- 使用 PHPSecLib(RSAES-OAEP + MGF1-SHA256)用您的 RSA 公钥加密随机秘密值
- 使用 HMAC-SHA256 从秘密值及其 RSA 加密的密文派生出加密密钥
- 使用 defuse/php-encryption(身份验证对称密钥加密)加密您的明文消息
- 计算加密值(和版本标签)的校验和
- 身份验证
- 使用 PHPSecLib(RSASS-PSS + MGF1-SHA256)签名消息
支持合同
如果贵公司在其产品或服务中使用这个库,您可能对从Paragon Initiative Enterprises购买支持合同感兴趣。点击此处购买支持合同。