PHP 上級ガイド: デジタル署名付きの QR コードを生成するには?
QR コードの普及に伴い、QR コードのセキュリティに注目する人が増えています。 QR コードのセキュリティを高める 1 つの方法は、QR コードの改ざんや偽造を防ぐデジタル署名を追加することです。この記事では、PHPを使ってデジタル署名付きQRコードを生成する方法を紹介します。
QR コードを生成する最初のステップは、PHP QR コード生成ライブラリをインストールすることです。この例では、PHP QR コード ライブラリを使用します。ライブラリは次の方法でインストールできます。
composer require endroid/qr-code
ライブラリをインストールしたら、コードの記述を開始できます。まず、デジタル署名のない単純な QR コードを生成しましょう:
require 'vendor/autoload.php'; use EndroidQrCodeQrCode; $data = 'https://example.com'; // 要生成二维码的数据 $qrCode = new QrCode($data); $qrCode->writeFile('qrcode.png'); // 将二维码保存到文件
上記のコードは、https://example.com というデータを含む qrcode.png という名前の QR コード イメージを生成します。それでは、QR コードにデジタル署名を追加する方法を見てみましょう。
デジタル署名では、暗号化と検証に秘密キーと公開キーを使用する必要があります。 RSA キー ペアを生成したと仮定すると、秘密キーを使用してデータに署名し、公開キーを使用して署名を検証できます。
まず、デジタル署名を生成しましょう:
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');
上記のコードでは、openssl_pkey_get_private
関数を通じて秘密キーをロードし、openssl_sign## を使用しました。 # 関数はデータに署名します。次に、
QrCode インスタンスの
text 属性と
signature 属性を設定して、デジタル署名付きの QR コードを生成しました。
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 関数を使用してデータとデータを検証します。サイン。検証結果に基づいて、デジタル署名の正当性を知ることができます。
以上がPHP 上級ガイド: デジタル署名付きの QR コードを生成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。