In diesem Artikel werden hauptsächlich relevante Informationen zum Generieren von Signaturen und Überprüfen von Signaturen in PHP vorgestellt. Freunde, die diese benötigen, können sich auf
Signaturen generieren und Signaturen in PHP überprüfen
beziehen
<?php /** * 根据原文生成签名内容 * * @param string $data 原文内容 * * @return string * @author confu */ function sign($data) { $filePath = 'test.p12'; if(!file_exists($filePath)) { return false; } $pkcs12 = file_get_contents($filePath); if (openssl_pkcs12_read($pkcs12, $certs, '读取证书所需要的密码')) { $privateKey = $certs['pkey']; //根据实际情况键值可能不同 $publicKey = $certs['cert']; //根据实际情况键值可能不同 $binary_signature = ""; if (openssl_sign($data, $binarySignature, $privateKey, OPENSSL_ALGO_SHA1)) { return $binarySignature; } else { return ''; } } else { return ''; } } /** * 验证签名自己生成的是否正确 * * @param string $data 签名的原文 * @param string $signature 签名 * * @return bool * @author confu */ function verifySign($data, $signature) { $filePath = 'test.p12'; if(!file_exists($filePath)) { return false; } $pkcs12 = file_get_contents($filePath); if (openssl_pkcs12_read($pkcs12, $certs, '读取证书所需要的密码')) { $publicKey = $certs['cert']; $ok = openssl_verify($data, $signature, $publicKey); if ($ok == 1) { return true; } } return false; } /** * 验证返回的签名是否正确 * * @param string $data 要验证的签名原文 * @param string $signature 签名内容 * * @return bool * @author confu */ function verifyRespondSign($data, $signature) { $filePath = 'allinpay-pds.pem'; if(!file_exists($filePath)) { return false; } $fp = fopen($filePath, "r"); $cert = fread($fp, 8192); fclose($fp); $pubkeyid = openssl_get_publickey($cert); if(!is_resource($pubkeyid)) { return false; } $ok = openssl_verify($data, $signature, $pubkeyid); if ($ok == 1) { openssl_free_key($pubkeyid); return true; } return false; } ?>
openssl_sign Der Standard-Signature_alg-Parameter ist OPENSSL_ALGO_SHA1
Wenn Sie DSA-Verschlüsselung verwenden, müssen Sie den Parameter OPENSSL_ALGO_DSS1
Signature_alg Andere Parameter OPENSSL_ALGO_DSS1 (Ganzzahl) OPENSSL_ALGO_SHA1 (Ganzzahl) OPENSSL_ALGO_SHA224 (Ganzzahl) OPENSSL_ALGO_ SHA256 (Ganzzahl ) OPENSSL_ALGO_SHA384 (Ganzzahl) OPENSSL_ALGO_SHA512 (Ganzzahl) OPENSSL_ALGO_RMD160 (Ganzzahl) OPENSSL_ALGO_MD5. (Ganzzahl) OPENSSL _ALGO_MD4 ( Ganzzahl) OPENSSL_ALGO_MD2 (Ganzzahl)Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.Detaillierte Erklärung, wie PHP E-Mails basierend auf IMAP empfängt
PHP implementiert Dateisperre und Prozesssperre
Detaillierte Erklärung, wie man die Hosts-Datei in PHP ändert
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung der PHP-Signaturgenerierung und -Signaturprüfung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!