PHP Advanced Guide: Wie erstelle ich einen QR-Code mit einer digitalen Signatur?
Mit der weiten Verbreitung von QR-Codes achten immer mehr Menschen auf die Sicherheit von QR-Codes. Eine Möglichkeit, die Sicherheit eines QR-Codes zu erhöhen, besteht darin, eine digitale Signatur hinzuzufügen, die verhindert, dass der QR-Code manipuliert oder gefälscht wird. In diesem Artikel werde ich vorstellen, wie man mit PHP einen QR-Code mit einer digitalen Signatur generiert.
Der erste Schritt zum Generieren eines QR-Codes ist die Installation der PHP-QR-Code-Generierungsbibliothek. In diesem Beispiel verwenden wir die PHP-QR-Code-Bibliothek. Die Bibliothek kann installiert werden über:
composer require endroid/qr-code
Nach der Installation der Bibliothek können wir mit dem Schreiben von Code beginnen. Lassen Sie uns zunächst einen einfachen QR-Code ohne digitale Signatur generieren:
require 'vendor/autoload.php'; use EndroidQrCodeQrCode; $data = 'https://example.com'; // 要生成二维码的数据 $qrCode = new QrCode($data); $qrCode->writeFile('qrcode.png'); // 将二维码保存到文件
Der obige Code generiert ein QR-Code-Bild mit dem Namen qrcode.png, das die Daten https://example.com enthält. Schauen wir uns nun an, wie man einem QR-Code eine digitale Signatur hinzufügt.
Digitale Signaturen erfordern die Verwendung privater und öffentlicher Schlüssel zur Verschlüsselung und Überprüfung. Vorausgesetzt, wir haben ein RSA-Schlüsselpaar generiert, können wir den privaten Schlüssel zum Signieren der Daten verwenden und dann den öffentlichen Schlüssel zum Überprüfen der Signatur verwenden.
Erzeugen wir zunächst eine digitale Signatur:
require 'vendor/autoload.php'; use EndroidQrCodeQrCode; use MikeBrantQRCodeQRCodeGenerator; $data = 'https://example.com'; // 要生成二维码的数据 // 加载私钥 $privateKey = openssl_pkey_get_private(file_get_contents('private_key.pem')); // 对数据进行签名 openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256); // 生成二维码 $qrCode = new QrCode(); $qrCode->setText($data); $qrCode->setSignature($signature); $qrCode->writeFile('qrcode.png');
Im obigen Code haben wir den privaten Schlüssel über die Funktion openssl_pkey_get_private
geladen und die Daten mit der Funktion openssl_sign
signiert . Anschließend haben wir einen QR-Code mit einer digitalen Signatur generiert, indem wir das Attribut text
und das Attribut signatur
der Instanz QrCode
festgelegt haben. openssl_pkey_get_private
函数加载了私钥,并使用openssl_sign
函数对数据进行签名。然后,我们通过设置QrCode
实例的text
属性和signature
属性生成了带有数字签名的二维码。
最后,我们需要使用公钥验证数字签名。以下是代码示例:
require 'vendor/autoload.php'; use EndroidQrCodeQrCode; $data = 'https://example.com'; // 要生成二维码的数据 // 加载公钥 $publicKey = openssl_pkey_get_public(file_get_contents('public_key.pem')); // 验证签名 $isValid = openssl_verify($data, $signature, $publicKey, OPENSSL_ALGO_SHA256); if ($isValid === 1) { echo '数字签名验证通过!'; } elseif ($isValid === 0) { echo '数字签名验证失败!'; } else { echo '数字签名验证出错!'; }
在以上代码中,我们使用openssl_pkey_get_public
函数加载公钥,并使用openssl_verify
rrreee
Im obigen Code verwenden wir die Funktionopenssl_pkey_get_public
, um den öffentlichen Schlüssel zu laden, und die Funktion openssl_verify
, um die Daten und die Signatur zu überprüfen. Anhand der Verifizierungsergebnisse können wir die Gültigkeit der digitalen Signatur ermitteln. 🎜🎜Mit dem obigen Codebeispiel können wir lernen, wie man mit PHP einen QR-Code mit digitaler Signatur generiert. Diese Methode kann die Sicherheit von QR-Codes verbessern und Manipulationen und Fälschungen verhindern. Ich hoffe, dieser Artikel hilft Ihnen! 🎜Das obige ist der detaillierte Inhalt vonPHP Advanced Guide: Wie erstelle ich einen QR-Code mit einer digitalen Signatur?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!