Maison > Article > développement back-end > Algorithme de signature PHP RSA2
L'algorithme de signature RSA2 sera utilisé dans certains projets. Aujourd'hui, nous allons examiner l'utilisation de l'algorithme de signature RSA2 en PHP.
Qu'est-ce que RSA2 ?
RSA2 est basé sur l'algorithme de signature SHA1WithRSA d'origine et ajoute un nouvel algorithme de signature qui prend en charge SHA256WithRSA.
Cet algorithme a des capacités de sécurité plus fortes que SHA1WithRSA en termes d'algorithme de digestion.
L'algorithme de signature SHA1WithRSA continuera d'être pris en charge, mais pour la sécurité de votre application, il est fortement recommandé d'utiliser l'algorithme de signature SHA256WithRSA.
Quelles entreprises l'utilisent ?
Plateformes de développement de certaines grandes entreprises, comme Alipay et Sina Weibo.
Créer une clé privée et une clé publique
//生成原始 RSA私钥文件 openssl genrsa -out rsa_private_key.pem 1024 //将原始 RSA私钥转换为 pkcs8格式 openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem //生成RSA公钥 openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem //我们将私钥rsa_private_key.pem用在服务器端,公钥发放给android跟ios等前端。
Vérification de la signature PHP-RSA2
class Rsa2 { private static $PRIVATE_KEY = 'rsa_private_key.pem 内容'; private static $PUBLIC_KEY = 'rsa_public_key.pem 内容'; /** * 获取私钥 * @return bool|resource */ private static function getPrivateKey() { $privKey = self::$PRIVATE_KEY; return openssl_pkey_get_private($privKey); } /** * 获取公钥 * @return bool|resource */ private static function getPublicKey() { $publicKey = self::$PUBLIC_KEY; return openssl_pkey_get_public($publicKey); } /** * 创建签名 * @param string $data 数据 * @return null|string */ public function createSign($data = '') { if (!is_string($data)) { return null; } return openssl_sign( $data, $sign, self::getPrivateKey(), OPENSSL_ALGO_SHA256 ) ? base64_encode($sign) : null; } /** * 验证签名 * @param string $data 数据 * @param string $sign 签名 * @return bool */ public function verifySign($data = '', $sign = '') { if (!is_string($sign) || !is_string($sign)) { return false; } return (bool)openssl_verify( $data, base64_decode($sign), self::getPublicKey(), OPENSSL_ALGO_SHA256 ); } }
Appel PHP
require_once "Rsa2.php"; $rsa2 = new Rsa2(); $data = 'my data'; //待签名字符串 $strSign = $rsa2->createSign($data); //生成签名 var_dump($strSign); $is_ok = $rsa2->verifySign($data, $sign); //验证签名 var_dump($is_ok);
Lecture connexe :
Exemple d'analyse de l'algorithme de recherche binaire implémenté par PHP
Comment PHP implémente l'algorithme Naive Bayes pour l'apprentissage automatique
Analyse détaillée de la façon dont PHP implémente l'algorithme de tri Hill
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!