Heim > Backend-Entwicklung > PHP-Tutorial > PHP RSA2-Signaturalgorithmus

PHP RSA2-Signaturalgorithmus

*文
Freigeben: 2023-03-18 08:26:02
Original
4381 Leute haben es durchsucht

Der RSA2-Signaturalgorithmus wird in einigen Projekten verwendet. Heute werfen wir einen Blick auf die Verwendung des RSA2-Signaturalgorithmus in PHP.

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.

Welche Unternehmen nutzen es?

Entwicklungsplattformen einiger großer Unternehmen, wie Alipay und Sina Weibo.

Privaten Schlüssel und öffentlichen Schlüssel erstellen

//生成原始 RSA私钥文件
openssl genrsa -out rsa_private_key.pem 1024
//将原始 RSA私钥转换为 pkcs8格式
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem
//生成RSA公钥
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
//我们将私钥rsa_private_key.pem用在服务器端,公钥发放给android跟ios等前端。
Nach dem Login kopieren

PHP-RSA2-Signaturüberprüfung

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

Verwandte Lektüre:

Beispielanalyse eines von PHP implementierten binären Suchalgorithmus

Wie PHP den Naive Bayes-Algorithmus für maschinelles Lernen implementiert

Detaillierte Analyse, wie PHP den Hill-Sortieralgorithmus implementiert

Das obige ist der detaillierte Inhalt vonPHP RSA2-Signaturalgorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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