好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > ThinkPHP實現的rsa非對稱加密類示例

ThinkPHP實現的rsa非對稱加密類示例

熱門標簽:寶安400電話辦理 哈爾濱400電話辦理到易號網 拉薩打電話機器人 電銷機器人-快迭智能 高識別電銷機器人 沈陽人工智能電銷機器人公司 h5 地圖標注 智能外呼電銷系統 合肥外呼系統app

本文實例講述了ThinkPHP實現的rsa非對稱加密類。分享給大家供大家參考,具體如下:

公鑰加密后的字符串是一直變化的,但是用私鑰解密后的內容仍然是相同的,這是為了加密數據使用的。

私鑰加密的字符串是不會變化的,即使暴露在外網上別人截取時如果沒有公鑰也是看不出來內容的,僅允許給予公鑰的第三方來解密并看到內容,實際作用相當于簽名功能,如果能拿到未加密的內容,說明一定是信任方的數據,因為有他的簽名啊。

其實這種非對稱加密技術可以用于單點登錄中去,安全級別高,能解密獲取到內容應該就是信任方的數據。

?php
namespace Common\Org;
class RsaCrypt {
 const CERPATH ='../Application/Runtime/Data/server.cer'; //生成證書路徑
 const PFXPATH = '../Application/Runtime/Data/server.pfx'; //秘鑰文件路徑
 const FILEDIR = '../Application/Runtime/Data/';
  /**
  * 生成公鑰私鑰
  */
  public static function generateCertKey()
  {
  $dn = array('countryName'=>'CN', 'stateOrProvinceName'=>'beijing', 'localityName'=>'beijing','organizationName'=>'clcw',
    'organizationalUnitName'=>'clcw', 'commonName'=>'clcw', 'emailAddress'=>'service@clcw.com.cn');
  $privkeypass = 'secret';  //私鑰密碼
  $numberOfDays = 365;   //有效時長,單位為天
  //生成證書
  $privkey = openssl_pkey_new();
  $csr = openssl_csr_new($dn, $privkey);
  $sscert = openssl_csr_sign($csr, null, $privkey, $numberOfDays);
  openssl_x509_export_to_file($sscert, self::CERPATH);
  openssl_pkcs12_export_to_file($sscert, self::PFXPATH, $privkey, $privkeypass);
  (file_exists(self::CERPATH)) or die('公鑰的文件路徑錯誤');
  (file_exists(self::PFXPATH)) or die('密鑰的文件路徑錯誤');
  }
  public static function verifyData($originData, $decryptData)
  {
  $cer_key = file_get_contents(self::$cerpath);
  $cer = openssl_x509_read($cer_key);
  $res = openssl_verify($originData, $decryptData, $cer);
  var_dump($res);
  }
  /**
  * 生成公鑰私鑰文件
  * @param $appName string 應用名稱
  */
  public static function generateKey($appName='')
  {
  $result = ['status'=>0, 'msg'=>''];
  if (!extension_loaded('openssl') ) {
   $result['msg'] = 'php需要openssl支持';
  }
  //創建公鑰
  $res = openssl_pkey_new();//array('private_key_bits'=>512) 這一串參數不加,否則只能加密54個長度的字符串
  //提取私鑰
  openssl_pkey_export($res, $privatekey);
  //生成公鑰
  $public_key = openssl_pkey_get_details($res);
  $publickey = $public_key['key'];
  // $path = self::FILEDIR.$appName;
  try{
   // file_put_contents($path.'_public.pem', $publickey);
   // file_put_contents($path.'_private.pem', $privatekey);
   $result['status'] = 1;
   $result['publickey'] = $publickey;
   $result['privatekey'] = $privatekey;
  }catch(\Exception $e) {
   // throw new \Exception($e->getMessage());
   $result['msg'] = $e->getMessage();
  }
  return $result;
  }
  /**
  * 用私鑰加密數據
  * @param $data string 需要加密的字符串(最好不要超過200個字符)
  * @param $appName string 應用名稱
  */
  public static function privateEncrypt($data, $appName)
  {
  $result = ['status'=>0, 'msg'=>''];
  $privatekey = C($appName.'.PRIVATE_KEY');
  $myinfo = 'In '.__METHOD__.',privatekey:'.$privatekey."\n";
  file_put_contents('/tmp/shiyf.log', $myinfo, FILE_APPEND);
  //生成resource類型的密鑰,如果密鑰文件內容被破壞,openssl_pkey_get_private函數返回false
  $privatekey = openssl_pkey_get_private($privatekey);
  if (empty($privatekey)) {
   $result['msg'] = '密鑰不可用';
  }
  $encryptData = '';
  //用私鑰加密
  if (openssl_private_encrypt($data, $encryptData, $privatekey)) {
   $result['msg'] = base64_encode($encryptData);
   $result['status'] = 1;
  } else {
   $result['msg'] = '加密失?。?;
  }
  return $result;
  }
  /**
  * 用公鑰解密數據
  * @param $data string 需要解密的字符串(最好不要超過200個字符)
  * @param $appName string 應用名稱
  */
  public static function publicDecrypt($data, $appName)
  {
  $result = ['status'=>0, 'msg'=>''];
  $data = base64_decode($data);
  $publickey = C($appName.'.PUBLIC_KEY');
  //生成resource類型的公鑰,如果公鑰文件內容被破壞,openssl_pkey_get_public函數返回false
  $publickey = openssl_pkey_get_public($publickey);
  if (empty($publickey)) {
   $result['msg'] = '公鑰不可用';
  }
  //解密數據
  $decryptData = '';
  if (openssl_public_decrypt($data, $decryptData, $publickey)) {
   $result['msg'] = $decryptData;
   $result['status'] = 1;
  } else {
   $result['msg'] = '解密失敗';
  }
  return $result;
  }
  /**
  * 用公鑰加密數據
  * @param $data string 需要加密的字符串(最好不要超過200個字符)
  * @param $appName string 應用名稱
  */
  public static function publicEncrypt($data, $publickey)
  {
  $result = ['status'=>0, 'msg'=>''];
  //生成resource類型的公鑰,如果公鑰文件內容被破壞,openssl_pkey_get_private函數返回false
  $publickey = openssl_pkey_get_public($publickey);
  if (empty($publickey)) {
   $result['msg'] = '公鑰不可用';
  }
  $encryptData = '';
  //用私鑰加密
  if (openssl_public_encrypt($data, $encryptData, $publickey)) {
   $result['msg'] = base64_encode($encryptData);
   $result['status'] = 1;
  } else {
   $result['msg'] = '加密失?。?;
  }
  return $result;
  }
  /**
  * 用私鑰加密數據
  * @param $data string 需要解密的字符串(最好不要超過200個字符)
  * @param $appName string 應用名稱
  */
  public static function privateDecrypt($data, $appName)
  {
  $result = ['status'=>0, 'msg'=>''];
  $data = base64_decode($data);
  $privatekey = C($appName.'.PRIVATE_KEY');
  //生成resource類型的私鑰,如果私鑰文件內容被破壞,openssl_pkey_get_public函數返回false
  $privatekey = openssl_pkey_get_private($privatekey);
  if (empty($privatekey)) {
   $result['msg'] = '私鑰不可用';
  }
  //解密數據
  $decryptData = '';
  if (openssl_private_decrypt($data, $decryptData, $privatekey)) {
   $result['msg'] = $decryptData;
   $result['status'] = 1;
  } else {
   $result['msg'] = '解密失敗';
  }
  return $result;
  }
}

PS:關于加密解密感興趣的朋友還可以參考本站在線工具:

在線RSA加密/解密工具:
http://tools.jb51.net/password/rsa_encode

文字在線加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode

在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

更多關于thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術總結》。

希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。

您可能感興趣的文章:
  • 淺談PHP SHA1withRSA加密生成簽名及驗簽
  • PHP7.1實現的AES與RSA加密操作示例
  • PHP封裝的非對稱加密RSA算法示例
  • 基于PHP RSA密文過長加密解密 越過1024的解決方法
  • PHP實現RSA加解密算法示例(生成密鑰位數為1024位的方法)
  • PHP的RSA加密解密方法以及開發接口使用
  • PHP檢測接口Traversable用法詳解
  • PHP實現的MD5結合RSA簽名算法實例
  • PHP實現RSA簽名生成訂單功能【支付寶示例】
  • php rsa 加密,解密,簽名,驗簽詳解
  • php基于openssl的rsa加密解密示例
  • PHP rsa加密解密使用方法
  • php實現RSA加密類實例
  • 詳解PHP使用非對稱加密算法RSA

標簽:山東 巴中 成都 張家口 泰州 林芝 威海 梅州

巨人網絡通訊聲明:本文標題《ThinkPHP實現的rsa非對稱加密類示例》,本文關鍵詞  ThinkPHP,實現,的,rsa,非對稱,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ThinkPHP實現的rsa非對稱加密類示例》相關的同類信息!
  • 本頁收集關于ThinkPHP實現的rsa非對稱加密類示例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 99久久免费国产精品| 客厅和亲妺妺好紧H小说最新章节| 免费一级网站免费| 亚洲免费精品| 国产一级A片毛片| 人妻ChinaHDWXXX睡觉| 嗯嗯啊啊老师| 女警被粗大灌满了白浆h| 宝贝真乖【高H】(完结)| 夜夜躁爽日日躁狠狠躁| 免费在线观看黄网| 俺去鲁婷婷六月色综合| 日韩欧美视频一区二区| 91无码粉嫩小泬无套在线哈尔滨| 两人房间免费播放在线播放| 啊轻点都日出水来了| 国产cdts| 午夜写真福利在线播放| 久久996| eeuss久久久精品影院| 国产黄色免费网站| 亚洲国产成人精品无码一区二区三区| 精品欧美AV无码喷奶水| 韩漫偷窥者无删减| 国产精品视频铁牛tv| 高h乱啊…嗯| ??禁漫天堂??羞羞漫画在线看| 全部孕妇毛片| 4438x亚洲| 国产精品无码一区二区三区免费| 桃子视频在线观看www| 三人交free性hd| 免费看av在线网站网址| 男男黄漫| 91娇妻3p第一次找单男| 日产精品久久久久久久性色777| 女子十八毛片| 波多野结衣作品番号| 最新福利在线| 王府调教妻妾打屁股臀缝| 无码人妻一区二区三区香港经典 |