Heim >Backend-Entwicklung >PHP-Tutorial >PHP Advanced Guide: Wie erstelle ich einen QR-Code mit einer digitalen Signatur?

PHP Advanced Guide: Wie erstelle ich einen QR-Code mit einer digitalen Signatur?

PHPz
PHPzOriginal
2023-08-19 21:22:48937Durchsuche

PHP Advanced Guide: Wie erstelle ich einen QR-Code mit einer digitalen Signatur?

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

Abschließend müssen wir die digitale Signatur mithilfe des öffentlichen Schlüssels überprüfen. Das Folgende ist ein Codebeispiel:

rrreee

Im obigen Code verwenden wir die Funktion openssl_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!

Stellungnahme:
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