ホームページ  >  記事  >  バックエンド開発  >  PHP 上級ガイド: デジタル署名付きの QR コードを生成するには?

PHP 上級ガイド: デジタル署名付きの QR コードを生成するには?

PHPz
PHPzオリジナル
2023-08-19 21:22:48893ブラウズ

PHP 上級ガイド: デジタル署名付きの QR コードを生成するには?

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 コードを生成する方法を学習できます。この方法により、QR コードのセキュリティが向上し、改ざんや偽造を防ぐことができます。この記事がお役に立てば幸いです!

以上がPHP 上級ガイド: デジタル署名付きの QR コードを生成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。