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

藏色散人
Freigeben: 2023-04-10 20:20:01
nach vorne
5740 Leute haben es durchsucht
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
                    );
    }
}
Nach dem Login kopieren
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);
Nach dem Login kopieren
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!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage