這個跟php沒有關系,單純的是兩個密碼學的演算法。如果真想搞清楚區別,你需要有密碼學的基礎知識。
我簡單說一下,這兩個都是標準的密碼學演算法,應用廣泛。AES是一個對稱加密演算法,常常用於對數據進行加密,RSA是一個非對稱(公鑰)加密演算法,常常用於對AES加密用的密鑰進行加密,或者進行數字簽名等。
至於對稱加密演算法和非對稱加密演算法的區別說起來就越來越多了。你只要知道以下事實就好:
對稱加密演算法加解密密鑰相同,而非對稱加密演算法加解密密鑰不同
對稱加密演算法相對於非對稱加密演算法而言往往加解密速度很快
非對稱加密演算法具有任何有公鑰的人都能加密數據,但是只有有私鑰的人才能解密數據的特點
⑵ RSA加密解密網在PHP中.問題,怎麼解決
舉例:
function rsaSign($data,$private_key) { $res = openssl_get_privatekey($private_key); // $data=sha1($data); //sha1加密(如果需要的話,如果進行加密,則對方也要進行加密後做對比) openssl_sign($data, $sign, $res,OPENSSL_ALGO_SHA1);//加簽,可以指定加密方式 openssl_free_key($res); //base64編碼 $sign = base64_encode($sign); return $sign;}
⑶ 關於RSA加密演算法請教 - PHP進階討論
公/鑰成對出現,私鑰加的密用公鑰解,公解加的密用私鑰解密。公鑰一般用於加密,驗證簽名私鑰一般用於簽名簽名的具體作法:? ?? ?首先將信息「***」通過散列演算法計算後得到的報文摘要,然後通過私鑰對摘要進行加密,後面簽名有三種證書:建行CA認證中心的根證書、建行網銀中心的伺服器證書,每 個網上銀行用戶在瀏覽器端的客戶證書。有了這三個證書,就可以在瀏覽器與建行網銀伺服器之間建立起SSL連接。這樣,您的瀏覽器與建行網銀伺服器之間就有 了一個安全的加密信道。您的證書可以使與您通訊的對方驗證您的身份(您確實是您所聲稱的那個您),同樣,您也可以用與您通訊的對方的證書驗證他的身份(他 確實是他所聲稱的那個他),而這一驗證過程是由系統自動完成的。銀行系統一般是:1. 用對方的公鑰加密數據,對方收到後用自己的私鑰解密;2. 用你自己的私鑰簽名數據,對方收到後用你自己的公鑰驗證簽名。 網銀在傳遞數據過程中要把」傳遞的數據「用自己的私鑰進行簽名,而且要把」傳遞的數據「用公鑰進行加密客戶端有自己的私鑰和一個數字證書,其中私鑰和伺服器中的公鑰成對,而且是數字證書中的公鑰和伺服器上的私鑰成對匹配.過程如下:? ? (1)客戶A准備好要傳送的數字信息(明文)。 (2)客戶A對數字信息進行哈希(hash)運算,得到一個信息摘要。 3)客戶A用自己的私鑰(SK)對信息摘要進行加密得到客戶A的數字簽名,並將其附在數字信息上。 4)客戶A隨機產生一個加密密鑰(DES密鑰),並用此密鑰對要發送的信息進行加密,形成密文。 5)客戶A用雙方共有的公鑰(PK)對剛才隨機產生的加密密鑰進行加密,將加密後的DES密鑰連同密文一起傳送給乙。 6)銀行B收到客戶A傳送過來的密文和加過密的DES密鑰,先用自己的私鑰(SK)對加密的DES密鑰進行解密,得到DES密鑰。 7)銀行B然後用DES密鑰對收到的密文進行解密,得到明文的數字信息,然後將DES密鑰拋棄(即DES密鑰作廢)。 8)銀行B用雙方共有的公鑰(PK)對客戶A的數字簽名進行解密,得到信息摘要。銀行B用相同的hash演算法對收到的明文再進行一次hash運算,得到一個新的信息摘要。 9)銀行B將收到的信息摘要和新產生的信息摘要進行比較,如果一致,說明收到的信息沒有被修改過。
⑷ 有誰知道php RSA加解密過程的來看一下
1、加米解米的第一步是生成公鑰、私鑰對,私鑰加米的內容能通過公鑰解米(反過來亦可以)下載開源RSA米鑰生成工具openssl(通常Linux系統都自帶該程序),解壓縮至獨立的文件夾,進入其中的bin目錄,執行以下命令:
復制代碼 代碼如下:
openssl genrsa -out rsa_private_key.pem 1024openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pemopenssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem第一條命令生成原始 RSA私鑰文件 rsa_private_key.pem,第二條命令將原始 RSA私鑰轉換為 pkcs8格式,第三條生成RSA公鑰 rsa_public_key.pem從上面看出通過私鑰能生成對應的公鑰,因此我們將私鑰private_key.pem用在伺服器端,公鑰發放給android跟ios等前端2、php中用生成的公鑰、私鑰進行加米解米,直接上代碼復制代碼 代碼如下:
$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='php ras加米演算法';
$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 '私鑰加米後:'.$encrypted."\n"; echo "<br>";echo "<br>";echo "public key decrypt:\n"; echo "<br>";openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私鑰加米的內容通過公鑰可用解米出來echo '公鑰解米後:'.$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>";
PHP的RSA配置常見問題:
●PHP開發語言的代碼示例中openssl文件夾中的3個DLL文件用法1、如果你的系統是windows系統,且system32文件目錄下沒有libeay32.dll、ssleay32.dll這兩個文件那麼需要拷貝這兩個文件到system32文件目錄。
2、如果您的php安裝目錄下(php\ext)中沒有php_openssl.dll那麼請把php_openssl.dll放在這個文件夾中
喜歡加米解米的小夥伴一定要好好看看這篇文章,受益匪淺。。。
?
⑸ php rsa公鑰加密的問題!
公鑰不對,你檢查一下,或者是常量的問題
⑹ php實現rsa演算法,該怎麼處理
php服務端與客戶端交互、提供開放api時,通常需要對敏感的部分api數據傳輸進行數據加密,這時候rsa非對稱加密就能派上用處了,下面通過一個例子來說明如何用php來實現數據的加密解密
加密的第一步是生成公鑰、私鑰對,私鑰加密的內容能通過公鑰解密(反過來亦可以)
下載開源RSA密鑰生成工具openssl(通常Linux系統都自帶該程序),解壓縮至獨立的文件夾,進入其中的bin目錄,執行以下命令:
opensslgenrsa-outrsa_private_key.pem1024
opensslpkcs8-topk8-informPEM-inrsa_private_key.pem-outformPEM-nocrypt-outprivate_key.pem
opensslrsa-inrsa_private_key.pem-pubout-outrsa_public_key.pem
⑺ php openssl rsa 加密長度大於117,返回false,無法加密,求解決辦法
把你自己的字元串分開,每100個字元串成一個,然後分開加密相連,解密的時候也是如此