ホームページ  >  記事  >  バックエンド開発  >  php openssl rsa暗号化と復号化

php openssl rsa暗号化と復号化

WBOY
WBOYオリジナル
2016-08-08 09:24:211030ブラウズ

$config = array(
//"config" =>"D:/phpserver/Lighttpd/openssl.cnf",
//'config' =>'D:/phpStudy/Lighttpd/ OpenSSL.cnf',
'private_key_bits' => 1024, // Key.
'private_key_type' => OPENSSL_KEYTYPE_RSA
);

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

// 秘密鍵を取得します
// openssl_pkey_export($res, $privkey, "パスフレーズ番号 1" );
openssl_pkey_export($res, $privkey);
var_dump($privkey);

// 公開鍵を取得しますkey
$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 = ' -----RSA 秘密キーの開始-----
MIICXQIBAAKBgQDNSQ4AmPZE01MpEO9dabRDsS0XwxKekEFUoWJneFG+NA6P52Js
ISw79QYNfQwM7akIaPpzU0+kkWjTSXiDqFUv5y2vaA3W2Tre5N51uCwUK 6/LfzHX
Bg0d+Bnlzy6Kb6bpgPgvbhAkNbvjbCS0V9h4v3WUTLR9QauJ05Q8qe70sQI DAQAB
AoGAb/9aZ1MMkNImfbIilXk1AvVn353qy51yNyTxFfhbyISIKVSYqtuYfFbJ h7
eZYz8UWs1jxuqB847IUZ/eJZzpVev480Tv9YejN0DhJ4Yw6y/kpJWo/9kEcET6Tk
vatXh+wgmieszkxe0kUvk41GPV7a4GWWQj6P4vjx+qktaNECQQDuo7ENW10dZX LG
YNKqUhgkdi9NPjRlHCgZ4RW0uoRqUsggqNVkaqpY8BaJOkkXWiQ0aVTPBiwo8k0+
S50rGNYNAkEA3DgxY9OwRc65VqS /UxV28pyLe2gy0XSVwa97SVNvYJJ58iNGEvYs
vEZ3GrTNAZpbPKcruCS6NiDK761Ot5A0NQJAOsRO1pY4QQP5lsbDOjRLQ7djaKef
6YJckbrvSHliIHjQVdKd8kOePZaqRhL3auvE3 K9Ptkez2kWJJh0i0DkmhQJBAMCm
F+7wnWA0PEbj0MvqFyiechb/TJWXm/lskbnP17tv6GY/HWoxGWmLa15dlIo2cmJZ
DBIHby8y+NU7k4VaDZECQQCO018O5TJWl+O+bWyzV1eR603 YP+JVjiSKUPtuyzVS
NIz+ClwspGmdUwPWlLqr5JfKm+OfpaLIepfJinsCgwpP
-----END RSA プライベートキー-----';

//$private_key ='-----RSA 秘密キーの開始-----
//MIICXAIBAAKBgQDVFOcE2nEBi+4FYvS36j1ShHHvusR0dXXe9NzAA/biH6NODywH
//cQo2Lyco6oSvY+cSsPewjjyatRCtq/Ri6c/am64 CJu+HM1lZH1Gh05C2KVJ2dveX
//gcdsz+/XPHDxYKAq/hW9S1NeYr2x4eJdpYNYucLn8XWgeLRnlJUnBl/ saqidaqab
// aogak2 z28hkkb+dornt2zktv2de85jhpr1ea+1m2xhjkzlqjiybb6m53lts
//
// vmr9babfuoah0gaq8ktjoz0durcecwv+ii7ilanorjpfwuucqqdveqrle2 // p7yvnniaiasl/e+xyqxccmidsdeddedqznrjhjfdobqpv/tgjn95n AKEA48GQMBO9KOONVO //Q581JSBKFGA4I7DETQ80OD4KYT6FWEZKAEHX
// K64SJMPFD/YS2HEKFHYNDO/K0NSUXGLNWWJBAKPX7 /u9qLLyBNSFrWALhy9oC5AT
//Hi0iLNEOZ5R43lNGB+jCf/aa6uW357wb2wzpZDWuXOk fOfUuKv+HEKBj00UCQCxd
//wowsiqcoB5rwcBrevr49fOTxMC7dQ3Omw3gU+odbb2iZW KAbaAh9ctIcExwFX5MKS
//BS5rXzne3AWmNnRPQnsCQDdOCBxkF5YctHqlmEETfKodVZG69COZGykdlenOxK6g
//qNNAT2y2mxInYGlPIJ+TfxxFIqesHdph4s/lw6T2ISY=
//-----END RSA PRIV ATE キー-----';

$public_key = '-----公開鍵の開始-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNSQ4AmPZE01MpEO9dabRDsS0X

wxKekEFUoWJneFG+NA6P52JsISw79QYNfQwM7akIaPpzU 0+kkWjTSXiDqFUv5y2v
aA3W2Tre5N51uCwUK6/LfzHXBg0d+Bnlzy6Kb6bpgPgvbhAkNbvjbCS0V9h4v3WU
TLR9QauJ05Q8qe70sQIDAQAB
-----END PUBLIC KEY-----' ;

//$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 を返すことができます リソース 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 = "";

$復号化 = "";

echo "ソース データ:",$data,"
";

echo "秘密キーの暗号化:n";

openssl_private_encrypt($data,$encrypted,$pi_key);//秘密鍵暗号化
$encrypted =base64_encode($encrypted);//暗号化されたコンテンツには通常特殊文字が含まれており、ネットワーク間で URL を介して送信される前にエンコード変換が必要です。 Base64 エンコーディングが URL セーフであるかどうかに注意してください
echo "
----------秘密キー暗号化------------
" ;
echo $encrypted,"
";
echo "
----------秘密鍵暗号化------------ < ;br />";
echo "public key decrypt:n";
$decrypted="";
openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//秘密鍵で暗号化されたコンテンツは公開鍵を通過します 鍵は復号化できます
echo $decrypted,"n";

echo "------------------------------------- ------ ------n";
echo "公開鍵暗号化:n";

openssl_public_encrypt($data,$encrypted,$pu_key);//公開鍵暗号化
$encrypted =base64_encode( $encrypted);
echo $encrypted,"n";

$decrypted="";
//$encrypted="JBeapcp9iWWYJYElgqtrZxfxM4wVkCaSn/oJZ7NjfR23o76fdbxEXpf+PGWACw3PeTdObwL4108wR3ihKmy2iY kIExGjBYyvx2 w9aHies8ZsOIP3LjiMHYTm93Rr8Sc5XxHWQc3Dhbq16JWHYZ2d+RrOpHd4x84GF3JXwivrGO4=";
echo "秘密鍵の復号化:n";
openssl_private_decrypt(base64_decode($encrypted) ,$decrypted,$pi_key);//秘密鍵の復号
echo "--->:".$decrypted,"n";
?>

上記では、php openssl rsa の暗号化と復号化について、内容の側面も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。