Heim >Backend-Entwicklung >PHP-Tutorial >Was ist RSA2? Wie implementiert man die PHP-RSA2-Signaturüberprüfung?

Was ist RSA2? Wie implementiert man die PHP-RSA2-Signaturüberprüfung?

藏色散人
藏色散人nach vorne
2021-12-08 15:21:225774Durchsuche
Was ist RSA2?

RSA2 basiert auf dem ursprünglichen SHA1WithRSA-Signaturalgorithmus und fügt einen neuen Signaturalgorithmus hinzu, der SHA256WithRSA unterstützt.

Dieser Algorithmus verfügt in Bezug auf den Digest-Algorithmus über stärkere Sicherheitsfunktionen als SHA1WithRSA.

Der SHA1WithRSA-Signaturalgorithmus wird weiterhin unterstützt, für die Sicherheit Ihrer Anwendung wird jedoch dringend empfohlen, den SHA256WithRSA-Signaturalgorithmus zu verwenden. Name des Algorithmus der Entwicklungsplattform 048

RSASHA1MitRSAEs gibt keine Begrenzung für die Länge des RSA-Schlüssels. Es wird empfohlen, mehr als 2048 Bit zu verwenden.Welche Unternehmen verwenden ihn? openssl genrsa -out rsa_private_key.pem 1024//Konvertieren Sie den ursprünglichen privaten RSA-Schlüssel in das pkcs8-Formatopenssl pkcs8 -topk8 -inform PEM -in rsa_private_key . pem -outform PEM -nocrypt -out private_key.pemopenssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
class Rsa2
{
    private static $PRIVATE_KEY = 'rsa_private_key.pem 内容';
    private static $PUBLIC_KEY  = 'rsa_public_key.pem 内容';

    /**
     * 获取私钥
     * @return bool|resource
     */
    private static function getPrivateKey()
    {
        $privKey = self::$PRIVATE_KEY;
        return openssl_pkey_get_private($privKey);
    }

    /**
     * 获取公钥
     * @return bool|resource
     */
    private static function getPublicKey()
    {
        $publicKey = self::$PUBLIC_KEY;
        return openssl_pkey_get_public($publicKey);
    }

    /**
     * 创建签名
     * @param string $data 数据
     * @return null|string
     */
    public function createSign($data = '')
    {
        if (!is_string($data)) {
            return null;
        }
        return openssl_sign(
                    $data,
                    $sign,
                    self::getPrivateKey(),
                    OPENSSL_ALGO_SHA256
                  ) ? base64_encode($sign) : null;
    }

    /**
     * 验证签名
     * @param string $data 数据
     * @param string $sign 签名
     * @return bool
     */
    public function verifySign($data = '', $sign = '')
    {
        if (!is_string($sign) || !is_string($sign)) {
            return false;
        }
        return (bool)openssl_verify(
                      $data,
                      base64_decode($sign),
                      self::getPublicKey(),
                      OPENSSL_ALGO_SHA256
                    );
    }
}
PHP-Aufruf
require_once "Rsa2.php";
$rsa2 = new Rsa2();

$data = 'my data'; //待签名字符串

$strSign = $rsa2->createSign($data);      //生成签名
var_dump($strSign);

$is_ok = $rsa2->verifySign($data, $sign); //验证签名
var_dump($is_ok);
Entwicklungsplattformen einiger großer Unternehmen, wie Alipay und Sina Weibo. Privaten Schlüssel und öffentlichen Schlüssel erstellen //Generieren Sie die ursprüngliche private RSA-Schlüsseldatei
//Generieren Sie den öffentlichen RSA-Schlüssel//Wir verwenden den privaten Schlüssel rsa_private_key.pem auf der Serverseite, öffentlich Der Schlüssel wird an Frontends wie Android und iOS ausgegeben. PHP-RSA2-Signaturüberprüfung
Empfohlenes Lernen: „
PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist RSA2? Wie implementiert man die PHP-RSA2-Signaturüberprüfung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen