Heim  >  Artikel  >  Backend-Entwicklung  >  PHP OpenSSL RSA-Verschlüsselung und Entschlüsselung

PHP OpenSSL RSA-Verschlüsselung und Entschlüsselung

WBOY
WBOYOriginal
2016-08-08 09:24:211032Durchsuche

$config = array(
//"config" =>"D:/phpserver/Lighttpd/openssl.cnf",
//'config' => 'D:/phpStudy/Lighttpd/OpenSSL.cnf',
'private_key_bits' => 1024,    // Größe des Schlüssels.
'private_key_type' => OPENSSL_KEYTYPE_RSA
);

//$res = openssl_pkey_new();
$res = openssl_pkey_new($config);

// Privaten Schlüssel abrufen
// openssl_pkey_export($res, $privkey, "Passphrase Nummer 1 " );
 openssl_pkey_export($res, $privkey);
var_dump($privkey);

// Öffentlichen Schlüssel abrufen
 $pubkey=openssl_pkey_get_details($res);

// echo "------------>
";
// print_r($pubkey["rsa"]);
// $bin_str=$pubkey["rsa"]["n"];
// print_r($bin_str);
// echo "
";
// //echo $bin_hex_str = pack("H*" , bin2hex($bin_str));
// echo $bin_hex_str =  bin2hex($bin_str);
// echo "
----- -------<
";
 
 $pubkey=$pubkey["key"];
// var_dump($privkey);
// var_dump($pubkey);
 echo $privkey."

";
 echo $pubkey."

";
?>


$private_key = '-----BEGIN RSA Private KEY-----
MIICXQIBAAKBgQDNSQ4AmPZE01MpEO9dabRDsS0XwxKekEFUoWJneFG+NA6P52Js
ISw79QYNfQwM7akIaPpzU0 +kkwjtsxidqfuv5y2vaa3w2Tre5N51ucwuk6/lfzhx
bg0d+bnlzy6kb6bpgpgvbhaknbvjbcs0v9h4v3wutlr9Qauj05q8q8q8q8q8q8qe70Sqe70SQIDAMSQES70SQESQES70SQESQEM n353qy51ynytxffhbyisikvsyqtusuyffbjh7
ezyz8uws1jxuqb847iuz/ejzzpvev480Tv9yejn0dhj4yw6y/kpjwo/9KECET6TK
vatxh+wgmiesaCuS00TK
vatxh+wgmiesacxh Wqj6p4vjx+qktanecqqduo7enw10dzxlg
ynkquhgkdi9npjrlhcgz4rw0uorqusggqnvkaqpy8bajokkxwiq0avtpbi8. ulxvk0+
S50RGNNYNACHG0WO8RC0+
S50RGNNYNANAWOWRC65RC0TRC0WO/🎜> S50RGNYNANAWOWRC65RC65RC65RC65RC65RC65RC65RC65RC65RC65RC65RC65RC65RC65T. yle2gy0xsvwa97Svnvyjjj58ingevys
vez3grtnazpbpkcrucs6nidk761ot5a0nqjaosro1py4qqp5lsbdojrlq7djakef
6YJckbrvSHliIHjQVdKd8kOePZaqRhL3auvE3K9Ptkez2kWJJh0i0DkmhQJBAMCm
F+7wnWA0PEbj0MvqFyiechb/TJWXm/lskbnP17tv6GY/HWoxGWmLa15dlIo2cmJZ
DBIHby 8y+NU7k4VaDZECQQCO018O5TJWl+O+bWyzV1eR603YP+JVjiSKUPtuyzVS
NIz+ClwspGmdUwPWlLqr5JfKm+OfpaLIepfJinsCgwpP

-----END RSA PRIVATE KEY---- -';


//$private_key ='-----BEGIN RSA PRIVATE +cSsPewjjyatRCtq/Ri6c/ am64CJu+HM1lZH1Gh05C2KVJ2dveX
//gcdsz+/XPHDxYKAq/hW9S1NeYr2x4eJdpYNYucLn8XWgeLRnlJUnBl/saQIDAQAB
//AoGAK2oz28hKKB+DorNT2zktv2de85JhPr1EA+Zu J+1m2xHJKzlqJiYBB6M53ltS
//J446YZOPE/kXHgpwWIJlq9Wp1KiZPEfoRWzz1wmuj8. koq95vcxBeuyjX4ez4Dio6
//Vmr9BABFuoAh0GAq8kTJOz0DURCEcwv+iI7ILaNoRjPF WuUCQQDveqRLE2/N8NIy
// P7YVnniAiaSL/e+XYQXCMIDsdEdqZNRjhjfDoBqpV/tGjnuAn9zBVHNNLbLni5nf
//2nqgrh5jAkEA48gQmBO9koOnvO//Q581JSBKfga4i7DetQ80OD4kYt6fwezkaeHX
//k64s jmpfD/Ys2heKFhyNDO/k0NsUxGlNwwJBAKPx7/u9qLLyBNSFrWALhy9oC5AT
//Hi0iLNEOZ5R43lNGB+jCf/aa6uW357wb2wzpZDWuXOkfOfUuKv+HEKBj00UCQCxd
// woWsiqcoB5rwcBrevr49fOTxMC7dQ3Omw3gU+odbb2iZWKAbAh9ctIcExwFX5MKS
//BS5rXzne3AWmNnRPQnsCQDdOCBxkF5YctHqlmEETfKodVZG69COZGykdlenOxK6g
//qNNAT2y2mxInYGlPIJ+TfxxFIqesHdph4s/lw6T2ISY=
//-----END RSA PRIVATE KEY--- --';

$public_key = '---- -BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNSQ4AmPZE01MpEO9dabRDsS0X
wxKekEFUoWJneFG+NA6P52JsISw79QYNfQwM7akIaPpzU0+kkWjTSXi ' ;

//$private_key=$privkey;
//$public_key=$pubkey;

$fp=fopen("private_key","w");

fwrite ($fp,$private_key);
fclose($fp);

$fp=fopen("public_key","w");
fwrite($fp,$public_key);
fclose($fp);

//echo $private_key;
$pi_key =  openssl_pkey_get_private($private_key);//用返回资源id Ressourcen-ID
$pu_key = openssl_pkey_get_public($public_key);//这个函数可用来判断公钥是否是可用的

print_r($pi_key);echo "n";

print_r($pu_key); echo „n“;
echo „
----------------------
“;

$data = "woshizhu";//原始数据
$encrypted = "";
$decrypted = "";

echo "source data:",$data,"
";

echo "private key encrypt:n";

openssl_private_encrypt($data,$encrypted,$pi_key);//Verschlüsselung mit privatem Schlüssel
$encrypted = base64_encode($encrypted);//Der verschlüsselte Inhalt enthält normalerweise Sonderzeichen und erfordert für die Verwendung eine Kodierungskonvertierung Netzwerk Achten Sie bei der Übertragung über eine URL darauf, ob die Base64-Kodierung URL-sicher ist
echo "
----------Verschlüsselung mit privatem Schlüssel--------- ---
";
echo $encrypted,"
";
echo "
----------Privater Schlüssel Verschlüsselung-- ----------
";
echo "public key decrypt:n";
$decrypted="";
openssl_public_decrypt(base64_decode($ verschlüsselt), $decrypted,$pu_key);//Der mit dem privaten Schlüssel verschlüsselte Inhalt kann mit dem öffentlichen Schlüssel entschlüsselt werden
echo $decrypted,"n";

echo "----- ------ --------------n";
echo "public key encrypt:n";

openssl_public_encrypt ($data,$encrypted,$pu_key);//Public-Key-Verschlüsselung
$encrypted = base64_encode($encrypted);
echo $encrypted,"n";

$decrypted="" ;
//$encrypted="JBeapcp9iWWYJYElgqtrZxfxM4wVkCaSn/oJZ7NjfR23o76fdbxEXpf+PGWACw3PeTdObwL4108wR3ihKmy2iYkIExGjBYyvx2w9aHies8ZsOIP3LjiMHYTm 93Rr8 Sc5XxHWQc3Dhbq16JWHYZ2d+RrOpHd4x84GF3JXwivrGO4=";
echo "private key decrypt:n";
openssl_private_decrypt(base64_decode($encrypted), $decrypted,$pi_key); //Entschlüsselung des privaten Schlüssels
echo "--->:".$decrypted,"n";
?>

Das Obige stellt die PHP-OpenSSL-RSA-Verschlüsselung und -Entschlüsselung vor, einschließlich einiger Aspekte des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn