RSA加解密演算法功能的實現

來源:互聯網
上載者:User
這次給大家帶來RSA加解密演算法功能的實現,RSA加解密演算法功能實現的注意事項有哪些,下面就是實戰案例,一起來看一下。

大家可以先到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中文網其它相關文章!

推薦閱讀:

PHP產生器如何使用

phpStudy2018的安裝教程

ThinkPHP實現支付(jsapi支付)流程教程詳解_php執行個體

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.