您好,登錄后才能下訂單哦!
這篇文章主要介紹PHP中如何實(shí)現(xiàn)RSA加解密算法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
大家可以先到http://web.chacuo.net/netrsakeypair這個(gè)網(wǎng)站,在線生成公鑰和私鑰
RSA非對(duì)稱加密算法,如果是公鑰加密,就得用私鑰解密,反過來也一樣,私鑰加密的就用公鑰解密,以下是相關(guān)實(shí)現(xiàn)函數(shù)
/** * RSA私鑰加密 * @param string $private_key 私鑰 * @param string $data 要加密的字符串 * @return string $encrypted 返回加密后的字符串 */ function privateEncrypt($private_key,$data){ $encrypted = ''; $pi_key = openssl_pkey_get_private($private_key);//這個(gè)函數(shù)可用來判斷私鑰是否是可用的,可用返回資源id Resource id //最大允許加密長(zhǎng)度為117,得分段加密 $plainData = str_split($data, 100);//生成密鑰位數(shù) 1024 bit key foreach($plainData as $chunk){ $partialEncrypted = ''; $encryptionOk = openssl_private_encrypt($chunk,$partialEncrypted,$pi_key);//私鑰加密 if($encryptionOk === false){ return false; } $encrypted .= $partialEncrypted; } $encrypted = base64_encode($encrypted);//加密后的內(nèi)容通常含有特殊字符,需要編碼轉(zhuǎn)換下,在網(wǎng)絡(luò)間通過url傳輸時(shí)要注意base64編碼是否是url安全的 return $encrypted; }
/** * RSA公鑰解密(私鑰加密的內(nèi)容通過公鑰可以解密出來) * @param string $public_key 公鑰 * @param string $data 私鑰加密后的字符串 * @return string $decrypted 返回解密后的字符串 */ function publicDecrypt($public_key,$data){ $decrypted = ''; $pu_key = openssl_pkey_get_public($public_key);//這個(gè)函數(shù)可用來判斷公鑰是否是可用的 $plainData = str_split(base64_decode($data), 128);//生成密鑰位數(shù) 1024 bit key foreach($plainData as $chunk){ $str = ''; $decryptionOk = openssl_public_decrypt($chunk,$str,$pu_key);//公鑰解密 if($decryptionOk === false){ return false; } $decrypted .= $str; } return $decrypted; }
//RSA公鑰加密 function publicEncrypt($public_key,$data){ $encrypted = ''; $pu_key = openssl_pkey_get_public($public_key); $plainData = str_split($data, 100); foreach($plainData as $chunk){ $partialEncrypted = ''; $encryptionOk = openssl_public_encrypt($chunk,$partialEncrypted,$pu_key);//公鑰加密 if($encryptionOk === false){ return false; } $encrypted .= $partialEncrypted; } $encrypted = base64_encode($encrypted); return $encrypted; }
//RSA私鑰解密 function privateDecrypt($private_key,$data){ $decrypted = ''; $pi_key = openssl_pkey_get_private($private_key); $plainData = str_split(base64_decode($data), 128); foreach($plainData as $chunk){ $str = ''; $decryptionOk = openssl_private_decrypt($chunk,$str,$pi_key);//私鑰解密 if($decryptionOk === false){ return false; } $decrypted .= $str; } return $decrypted; }
以上是“PHP中如何實(shí)現(xiàn)RSA加解密算法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。