hubxlabs/easyrsa

由PHPSecLib提供支持的简单且安全的非对称加密

0.6.2 2018-12-12 12:19 UTC

This package is not auto-updated.

Last update: 2024-09-27 14:39:23 UTC


README

Build Status

phpseclib提供的简单且安全的封装。

重要!

为了更好的安全性,您应该使用libsodium,而不是EasyRSA。

动机

尽管由于指数算术攻击的进步,RSA的长期安全性(在最理想的情况下)是可疑的,但是RSA在流行的PHP加密库中的实现存在许多问题,使得它今天容易受到攻击。

感谢开发了phpseclib的人们,这使得在PHP中使用安全的RSA成为可能。然而,它对普通PHP开发人员来说不够友好,无法充分发挥其潜力。因此,我们承担起提供用户友好界面的责任。

EasyRSA采用MIT许可,由Paragon Initiative Enterprises的PHP开发团队提供。

如何使用此库?

composer require paragonie/easyrsa

生成RSA密钥对

您可以使用EasyRSA生成2048位密钥(或更大),默认大小为2048。

use \ParagonIE\EasyRSA\KeyPair;

$keyPair = KeyPair::generateKeyPair(4096);

$secretKey = $keyPair->getPrivateKey();
$publicKey = $keyPair->getPublicKey();

加密/解密消息

use \ParagonIE\EasyRSA\EasyRSA;

$ciphertext = EasyRSA::encrypt($message, $publicKey);

$plaintext = EasyRSA::decrypt($ciphertext, $secretKey);

签名/验证消息

use \ParagonIE\EasyRSA\EasyRSA;

$signature = EasyRSA::sign($message, $secretKey);

if (EasyRSA::verify($message, $signature, $publicKey)) {
    // Signature is valid!
}

它是如何工作的?

  • 加密(KEM+DEM)
    • 生成一个随机秘密值
    • 使用PHPSecLib(RSAES-OAEP + MGF1-SHA256)用您的RSA公钥加密随机秘密值
    • 使用HMAC-SHA256从秘密值及其RSA加密的密文派生加密密钥。
    • 使用defuse/php-encryption(认证对称密钥加密)加密您的明文消息
    • 计算加密值(和版本标签)的校验和
  • 身份验证
    • 使用PHPSecLib(RSASS-PSS + MGF1-SHA256)签名消息