Panduan Lanjutan PHP: Bagaimana untuk menjana kod QR dengan tandatangan digital?
Dengan aplikasi kod QR yang meluas, semakin ramai orang memberi perhatian kepada keselamatan kod QR. Satu cara untuk meningkatkan keselamatan kod QR adalah dengan menambah tandatangan digital, yang menghalang kod QR daripada diganggu atau dipalsukan. Dalam artikel ini, saya akan memperkenalkan cara menggunakan PHP untuk menghasilkan kod QR dengan tandatangan digital.
Langkah pertama untuk menjana kod QR ialah memasang perpustakaan penjanaan kod QR PHP. Dalam contoh ini, kami akan menggunakan perpustakaan Kod QR PHP. Perpustakaan boleh dipasang melalui:
composer require endroid/qr-code
Selepas memasang perpustakaan, kita boleh mula menulis kod. Mula-mula, mari kita hasilkan kod QR ringkas tanpa tandatangan digital:
require 'vendor/autoload.php'; use EndroidQrCodeQrCode; $data = 'https://example.com'; // 要生成二维码的数据 $qrCode = new QrCode($data); $qrCode->writeFile('qrcode.png'); // 将二维码保存到文件
Kod di atas akan menghasilkan imej kod QR bernama qrcode.png, yang mengandungi data https://example.com. Sekarang, mari kita lihat cara menambah tandatangan digital pada kod QR.
Tandatangan digital memerlukan penggunaan kunci peribadi dan awam untuk penyulitan dan pengesahan. Dengan mengandaikan kami telah menghasilkan pasangan kunci RSA, kami boleh menggunakan kunci persendirian untuk menandatangani data dan kemudian menggunakan kunci awam untuk mengesahkan tandatangan.
Mula-mula, mari kita jana tandatangan digital:
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');
Dalam kod di atas, kami memuatkan kunci persendirian melalui fungsi openssl_pkey_get_private
dan menandatangani data menggunakan fungsi openssl_sign
. Kemudian, kami menghasilkan kod QR dengan tandatangan digital dengan menetapkan atribut text
dan atribut signature
bagi contoh QrCode
. 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
Dalam kod di atas, kami menggunakan fungsiopenssl_pkey_get_public
untuk memuatkan kunci awam dan fungsi openssl_verify
untuk mengesahkan data dan tandatangan. Berdasarkan keputusan pengesahan, kita boleh mengetahui kesahihan tandatangan digital tersebut. 🎜🎜Dengan contoh kod di atas, kita boleh belajar cara menggunakan PHP untuk menjana kod QR dengan tandatangan digital. Kaedah ini boleh meningkatkan keselamatan kod QR dan mencegah gangguan dan pemalsuan. Harap artikel ini membantu anda! 🎜Atas ialah kandungan terperinci Panduan Lanjutan PHP: Bagaimana untuk menjana kod QR dengan tandatangan digital?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!