Maison > php教程 > PHP开发 > le corps du texte

Explication détaillée de l'utilisation du cryptage et du décryptage php rsa

高洛峰
Libérer: 2016-12-30 09:17:38
original
1527 Les gens l'ont consulté

1. La première étape du cryptage et du déchiffrement consiste à générer une paire de clé publique et de clé privée. Le contenu crypté par la clé privée peut être déchiffré par la clé publique (et vice versa)

Téléchargez la clé RSA open source Générez l'outil openssl (généralement les systèmes Linux sont livrés avec ce programme), décompressez-le dans un dossier séparé, entrez dans le répertoire bin et exécutez la commande suivante :

openssl genrsa -out rsa_private_key.pem 1024
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
Copier après la connexion
La première La commande génère le fichier de clé privée RSA d'origine rsa_private_key.pem, la deuxième commande convertit la clé privée RSA d'origine au format pkcs8 et la troisième commande génère la clé publique RSA rsa_public_key.pem

On peut voir de ce qui précède que le correspondant La clé publique peut être générée via la clé privée, nous le ferons donc. La clé private_key.pem est utilisée côté serveur et la clé publique est distribuée aux frontaux tels qu'Android et iOS

2. généré la clé publique et la clé privée pour le cryptage et le déchiffrement en php, et téléchargez directement le code

$fp=fopen("rsa/rsa_private_key.pem","r"); //你的私钥文件路径
$private_key=fread($fp,8192);
fclose($fp);
$fp1=fopen("rsa/rsa_public_key.pem","r"); //你的公钥文件路径
$public_key=fread($fp1,8192);
fclose($fp1);
//echo $private_key; 
$pi_key=openssl_pkey_get_private($private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id 
$pu_key=openssl_pkey_get_public($public_key );//这个函数可用来判断公钥是否是可用的
print_r($pi_key);echo "\n"; echo "<br>";
print_r($pu_key);echo "\n"; echo "<br>";
echo "<hr>";
$data=&#39;php ras加密算法&#39;;
$encrypted = ""; 
$decrypted = ""; 
echo "加密的源数据:".$data."\n"; echo "<br>";
echo "private key encrypt:\n"; echo "<br>";
openssl_private_encrypt($data,$encrypted,$pi_key);//私钥加密 
$encrypted = base64_encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的 
echo &#39;私钥加密后:&#39;.$encrypted."\n"; echo "<br>";echo "<br>";
echo "public key decrypt:\n"; echo "<br>";
openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私钥加密的内容通过公钥可用解密出来 
echo &#39;公钥解密后:&#39;.$decrypted."\n"; echo "<br>";
echo "<hr>";
echo "public key encrypt:\n"; echo "<br>";
openssl_public_encrypt($data,$encrypted,$pu_key);//公钥加密 
$encrypted = base64_encode($encrypted); 
echo $encrypted,"\n"; echo "<br>";
echo "private key decrypt:\n"; echo "<br>";
openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私钥解密 
echo $decrypted,"\n"; echo "<br>";
Copier après la connexion
FAQ de configuration RSA de PHP :

●Utilisation des trois fichiers DLL dans le dossier openssl dans l'exemple de code du langage de développement PHP

1. Si votre système est un système Windows et qu'il n'y a pas de fichiers libeay32.dll et ssleay32.dll dans le répertoire de fichiers system32

Ensuite, vous devez copier ces deux fichiers. dans le répertoire de fichiers system32.

2. S'il n'y a pas de php_openssl.dll dans votre répertoire d'installation php (phpext)

alors veuillez mettre php_openssl.dll dans ce dossier

Comme le cryptage et le décryptage Mes amis Je dois lire attentivement cet article, il en bénéficiera beaucoup. . .

Pour des explications plus détaillées sur l'utilisation du cryptage et du décryptage PHP RSA, veuillez faire attention au site PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal