大家可以先到http://web.chacuo.net/netrsakeypair這個網站,在線生成公鑰和私鑰
RSA非對稱加密算法,如果是公鑰加密,就得用私鑰解密,反過來也一樣,私鑰加密的就用公鑰解密,以下是相關實現函數
/**
* RSA私鑰加密
* @param string $private_key 私鑰
* @param string $data 要加密的字符串
* @return string $encrypted 返回加密后的字符串
* @author mosishu
*/
function privateEncrypt($private_key,$data){
$encrypted = '';
$pi_key = openssl_pkey_get_private($private_key);//這個函數可用來判斷私鑰是否是可用的,可用返回資源id Resource id
//最大允許加密長度為117,得分段加密
$plainData = str_split($data, 100);//生成密鑰位數 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);//加密后的內容通常含有特殊字符,需要編碼轉換下,在網絡間通過url傳輸時要注意base64編碼是否是url安全的
return $encrypted;
}
/**
* RSA公鑰解密(私鑰加密的內容通過公鑰可以解密出來)
* @param string $public_key 公鑰
* @param string $data 私鑰加密后的字符串
* @return string $decrypted 返回解密后的字符串
* @author mosishu
*/
function publicDecrypt($public_key,$data){
$decrypted = '';
$pu_key = openssl_pkey_get_public($public_key);//這個函數可用來判斷公鑰是否是可用的
$plainData = str_split(base64_decode($data), 128);//生成密鑰位數 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實現RSA加解密算法示例(生成密鑰位數為1024位的方法)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:- 淺談PHP SHA1withRSA加密生成簽名及驗簽
- PHP7.1實現的AES與RSA加密操作示例
- ThinkPHP實現的rsa非對稱加密類示例
- PHP封裝的非對稱加密RSA算法示例
- 基于PHP RSA密文過長加密解密 越過1024的解決方法
- PHP的RSA加密解密方法以及開發接口使用
- PHP檢測接口Traversable用法詳解
- PHP實現的MD5結合RSA簽名算法實例
- PHP實現RSA簽名生成訂單功能【支付寶示例】
- php rsa 加密,解密,簽名,驗簽詳解
- php基于openssl的rsa加密解密示例
- PHP rsa加密解密使用方法
- php實現RSA加密類實例
- 詳解PHP使用非對稱加密算法RSA