Maison >développement back-end >tutoriel php >PHP utilise OpenSSL pour générer des certificats et chiffrer et déchiffrer des exemples de code
OpenSSL est une bibliothèque cryptographique Secure Sockets Layer qui comprend les principaux algorithmes cryptographiques, les fonctions de gestion d'encapsulation de clés et de certificats couramment utilisées, ainsi que les protocoles SSL, et fournit une multitude d'applications pour les tests ou à d'autres utilisations.
Après qu'OpenSSL ait été exposé à de graves failles de sécurité, il a été découvert que la plupart des sites Web cryptés via le protocole SSL utilisent un progiciel open source appelé OpenSSL. La vulnérabilité OpenSSL n'affecte pas seulement les sites Web commençant par https, les pirates peuvent également utiliser cette vulnérabilité pour lancer directement des attaques « Heartbleed » sur les ordinateurs personnels. Selon l'analyse, un grand nombre de logiciels sous Windows utilisent la bibliothèque de codes vulnérable OpenSSL et peuvent être attaqués par des pirates informatiques pour capturer les données de la mémoire de l'ordinateur de l'utilisateur.
Cet article présente principalement l'utilisation d'OpenSSL pour générer des certificats ainsi que le cryptage et le décryptage en PHP. Les amis dans le besoin peuvent s'y référer
Dépend de l'extension OpenSSL
/*加密解密*/ function authcode($string, $operation = 'E') { $ssl_public = file_get_contents(DATA_PATH."/conf/cert_public.key"); $ssl_private = file_get_contents(DATA_PATH."/conf/cert_private.pem"); $pi_key = openssl_pkey_get_private($ssl_private);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id $pu_key = openssl_pkey_get_public($ssl_public);//这个函数可用来判断公钥是否是可用的 if(false == ($pi_key || $pu_key)) return '证书错误'; $data = ""; if($operation=='D'){ openssl_private_decrypt(base64_decode($string),$data,$pi_key);//私钥解密 }else{ openssl_public_encrypt($string,$data,$pu_key);//公钥加密 $data = base64_encode($data); } return $data; } /*生成证书*/ function exportOpenSSLFile(){ $config = array( "digest_alg" => "sha512", "private_key_bits" => 4096, //字节数 512 1024 2048 4096 等 "private_key_type" => OPENSSL_KEYTYPE_RSA, //加密类型 ); $res = openssl_pkey_new($config); if($res == false) return false; openssl_pkey_export($res, $private_key); $public_key = openssl_pkey_get_details($res); $public_key = $public_key["key"]; file_put_contents(DATA_PATH."/conf/cert_public.key",$public_key); file_put_contents(DATA_PATH."/conf/cert_private.pem",$private_key); openssl_free_key($res); }.
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!