php基于openssl的rsa加密解密示例
來(lái)源:易賢網(wǎng) 閱讀:1139 次 日期:2016-08-16 14:44:10
溫馨提示:易賢網(wǎng)小編為您整理了“php基于openssl的rsa加密解密示例”,方便廣大網(wǎng)友查閱!

本文實(shí)例講述了php基于openssl的rsa加密解密。分享給大家供大家參考,具體如下:

<?php

$config = array(

//"config" =>"D:/phpserver/Lighttpd/openssl.cnf",

//'config' =>'D:/phpStudy/Lighttpd/OpenSSL.cnf',

'private_key_bits' => 1024,  // Size of Key.

'private_key_type' => OPENSSL_KEYTYPE_RSA

);

//$res = openssl_pkey_new();

$res = openssl_pkey_new($config);

// Get private key

// openssl_pkey_export($res, $privkey, "PassPhrase number 1" );

openssl_pkey_export($res, $privkey);

var_dump($privkey);

// Get public key

$pubkey=openssl_pkey_get_details($res);

// echo "------------><br />";

// print_r($pubkey["rsa"]);

// $bin_str=$pubkey["rsa"]["n"];

// print_r($bin_str);

// echo "<br />";

// //echo $bin_hex_str = pack("H*" , bin2hex($bin_str));

// echo $bin_hex_str = bin2hex($bin_str);

// echo "<br />------------<<br />";

 $pubkey=$pubkey["key"];

// var_dump($privkey);

// var_dump($pubkey);

echo $privkey."<br /><br />";

echo $pubkey."<br /><br />";

?>

--------------------------------------------------------------------------

<?php

$private_key = '-----BEGIN RSA PRIVATE KEY-----

MIICXQIBAAKBgQDNSQ4AmPZE01MpEO9dabRDsS0XwxKekEFUoWJneFG+NA6P52Js

ISw79QYNfQwM7akIaPpzU0+kkWjTSXiDqFUv5y2vaA3W2Tre5N51uCwUK6/LfzHX

Bg0d+Bnlzy6Kb6bpgPgvbhAkNbvjbCS0V9h4v3WUTLR9QauJ05Q8qe70sQIDAQAB

AoGAb/9aZ1MMkNImfbIilXk1AvVn353qy51yNyTxFfhbyISIKVSYqtuSUYfFbJh7

eZYz8UWs1jxuqB847IUZ/eJZzpVev480Tv9YejN0DhJ4Yw6y/kpJWo/9kEcET6Tk

vatXh+wgmieszkxe0kUvk41GPV7a4GWWQj6P4vjx+qktaNECQQDuo7ENW10dZXLG

YNKqUhgkdi9NPjRlHCgZ4RW0uoRqUsggqNVkaqpY8BaJOkkXWiQ0aVTPBiwo8k0+

S50rGNYNAkEA3DgxY9OwRc65VqS/UxV28pyLe2gy0XSVwA97SVNvYJJ58iNGEvYs

vEZ3GrTNAZpbPKcruCS6NiDK761Ot5A0NQJAOsRO1pY4QQP5lsbDOjRLQ7djAKef

6YJckbrvSHliIHjQVdKd8kOePZaqRhL3auvE3K9Ptkez2kWJJh0i0DkmhQJBAMCm

F+7wnWA0PEbj0MvqFyiechb/TJWXm/lskbnP17tv6GY/HWoxGWmLa15dlIo2cmJZ

DBIHby8y+NU7k4VaDZECQQCO018O5TJWl+O+bWyzV1eR603YP+JVjiSKUPtuyzVS

NIz+ClwspGmdUwPWlLqr5JfKm+OfpaLIepfJinsCgwpP

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

//$private_key ='-----BEGIN RSA PRIVATE KEY-----

//MIICXAIBAAKBgQDVFOcE2nEBi+4FYvS36j1ShHHvusR0dXXe9NzAA/biH6NODywH

//cQo2Lyco6oSvY+cSsPewjjyatRCtq/Ri6c/am64CJu+HM1lZH1Gh05C2KVJ2dveX

//gcdsz+/XPHDxYKAq/hW9S1NeYr2x4eJdpYNYucLn8XWgeLRnlJUnBl/saQIDAQAB

//AoGAK2oz28hKKB+DorNT2zktv2de85JhPr1EA+ZuJ+1m2xHJKzlqJiYBB6M53ltS

//J446YZOPE/kXHgpwWIJlq9Wp1KiZPEfoRWzz1wmuj8koq95vcxBeuyjX4ez4Dio6

//Vmr9BABFuoAh0GAq8kTJOz0DURCEcwv+iI7ILaNoRjPFWuUCQQDveqRLE2/N8NIy

//P7YVnniAiaSL/e+XYQXCMIDsdEdqZNRjhjfDoBqpV/tGjnuAn9zBVHNNLbLni5nf

//2nqgrh5jAkEA48gQmBO9koOnvO//Q581JSBKfga4i7DetQ80OD4kYt6fwezkaeHX

//k64sjmpfD/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+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);//這個(gè)函數(shù)可用來(lái)判斷私鑰是否是可用的,可用返回資源id Resource id

$pu_key = openssl_pkey_get_public($public_key);//這個(gè)函數(shù)可用來(lái)判斷公鑰是否是可用的

print_r($pi_key);echo "\n";

print_r($pu_key);echo "\n";

echo "<br />----------------------<br />";

$data = "woshizhu";//原始數(shù)據(jù)

$encrypted = ""; 

$decrypted = "";

echo "source data:",$data,"<br />";

echo "private key encrypt:\n";

openssl_private_encrypt($data,$encrypted,$pi_key);//私鑰加密

$encrypted = base64_encode($encrypted);//加密后的內(nèi)容通常含有特殊字符,需要編碼轉(zhuǎn)換下,在網(wǎng)絡(luò)間通過(guò)url傳輸時(shí)要注意base64編碼是否是url安全的

echo "<br />----------私鑰加密------------<br />";

echo $encrypted,"<br />";

echo "<br />----------私鑰加密------------<br />";

echo "public key decrypt:\n";

$decrypted="";

openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私鑰加密的內(nèi)容通過(guò)公鑰可用解密出來(lái)

echo $decrypted,"\n";

echo "---------------------------------------\n";

echo "public key encrypt:\n";

openssl_public_encrypt($data,$encrypted,$pu_key);//公鑰加密

$encrypted = base64_encode($encrypted);

echo $encrypted,"\n";

$decrypted="";

//$encrypted="JBeapcp9iWWYJYElgqtrZxfxM4wVkCaSn/oJZ7NjfR23o76fdbxEXpf+PGWACw3PeTdObwL4108wR3ihKmy2iYkIExGjBYyvx2w9aHies8ZsOIP3LjiMHYTm93Rr8Sc5XxHWQc3Dhbq16JWHYZ2d+RrOpHd4x84GF3JXwivrGO4=";

echo "private key decrypt:\n";

openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私鑰解密

echo "--->:".$decrypted,"\n";

?>

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:php基于openssl的rsa加密解密示例
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)