lyhiving / easyrsa
由PHPSecLib提供动力的简单且安全的非对称加密
V0.1.1
2022-01-18 01:25 UTC
Requires
- defuse/php-encryption: ^2.0
- paragonie/constant_time_encoding: ^1|^2
- paragonie/random_compat: ^1|^2
- phpseclib/phpseclib: ^3.0.12
- sarciszewski/php-future: ^0
Requires (Dev)
- phpunit/phpunit: 4.*|5.*
Suggests
- ext-libsodium: 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.
This package is auto-updated.
Last update: 2024-09-18 07:09:53 UTC
README
Simple and Secure Wrapper for phpseclib.
变更内容
- 将2048位限制为1024位。
- 与微信RSA兼容。
重要!
为了更好的安全性,您应该使用 libsodium,而不是EasyRSA。
动机
尽管由于指数级数攻击的进步,RSA的长期安全性存疑(最好),但RSA在流行的PHP加密库中的实现存在许多问题,使得它今天容易受到攻击。
感谢开发 phpseclib 的人,我们现在可以在PHP中使用安全的RSA。然而,它对于普通的PHP开发者来说并不够友好,无法充分利用其潜力。因此,我们承担起提供用户友好界面的任务。
EasyRSA是MIT许可的,由 Paragon Initiative Enterprises 的安全PHP开发团队提供。
如何使用此库?
composer require lyhiving/easyrsa
生成RSA密钥对
您可以使用EasyRSA生成2048位密钥(或更大),默认大小为2048。
<?php use Lyhiving\EasyRSA\KeyPair; $keyPair = KeyPair::generateKeyPair(4096); $secretKey = $keyPair->getPrivateKey(); $publicKey = $keyPair->getPublicKey();
获取原始密钥
<?php /** @var \Lyhiving\EasyRSA\PublicKey $publicKey */ var_dump($publicKey->getKey());
加密/解密消息
<?php use Lyhiving\EasyRSA\EasyRSA; $message = "test"; /** @var \Lyhiving\EasyRSA\PublicKey $publicKey */ /** @var \Lyhiving\EasyRSA\PrivateKey $secretKey */ $ciphertext = EasyRSA::encrypt($message, $publicKey); $plaintext = EasyRSA::decrypt($ciphertext, $secretKey);
签名/验证消息
<?php use Lyhiving\EasyRSA\EasyRSA; $message = "test"; /** @var \Lyhiving\EasyRSA\PublicKey $publicKey */ /** @var \Lyhiving\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 购买支持合同感兴趣。