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

主頁 > 知識庫 > php的RSA加密解密算法原理與用法分析

php的RSA加密解密算法原理與用法分析

熱門標簽:騰訊外呼管理系統 昭通辦理400電話 山西回撥外呼系統 揚州地圖標注app 青島語音外呼系統招商 河南電銷卡外呼系統哪家強 山西探意電話機器人 岳陽外呼型呼叫中心系統在哪里 百應電話機器人服務

本文實例講述了php的RSA加密解密算法原理與用法。分享給大家供大家參考,具體如下:

最近因為工作的需要,要倒騰支付寶支付相關的知識,因為支付寶應用了RSA加密機制,個人對此并不了解,所以在這里寫下一篇總結。

1、生成公鑰和私鑰

要應用RSA算法,必須先生成公鑰和私鑰,公鑰和私鑰的生成可以借助openssl工具。

本次測驗是在windows下進行的,可以到以下的地址下載windows安裝包:http://gnuwin32.sourceforge.net/packages/openssl.htm,安裝過程不再贅述。

安裝過后,進入到安裝目錄的bin目錄下,執行如下命令:

openssl.exe     // 進入OpenSSL程序
genrsa -out rsa_private_key.pem 1024 //生成私鑰,執行成功后可以在當前目錄下看到生成了rsa_private_key.pem文件
pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt  //如果你使用的java,需要將私鑰轉換成PKCS8格式
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem //生成公鑰,執行成功后可以在當前目錄下看到生成rsa_public_key.pem文件

公鑰rsa_public_key.pem的內容:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDc5nSC6mHl9bmM6L8n7Sq1+Ft6
VF8LcU3jst8RIy7WqXXd5XZomc0cJLxVz3Vc0vgUKKJyP6q2ozDOCFgCp7Q9InFg
ngtNVLEJ1+Nm0+snUDbYbnrfW8wwSPG0jPQ73CgMxOdv+IGhir6mEITbdEh+ZsVc
GRd0OvKYIg+Itgk3/QIDAQAB
-----END PUBLIC KEY-----

私鑰rsa_private_key.pem的內容:

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDD4KA0yU7EG7ZA32OAVDHlwXf9LYywXGn7Ma9LffnFL57cpYoQ
Wf0Oz8FE9/UnjFOeHs2XjDrhe+uqVtYX/9Vi/znJgP9D7hpTo2NJHM/AUykD+itl
cie2Tu+sjJQi0JFVcpc3D0ooTBhng35406CucRaOn/a52mxQnGtA4AmsSwIDAQAB
AoGAG25nwTy39SrUWT1vl9cyrbRsc15fp4sppG4O2Imp4v2KR+g+749KqzpZHKmF
AabbRveVXzXaQR2zoUVL8kx3u4hqY4M/S1AcOxNPIJKB703XxA1yf2Ta2CvLsWTm
tsDWRW1WudF18yOZf3q7aoyMhpBUMlmhH4mvIYWOPFj0zaECQQD4A11Q8sfpOcIK
fMz5jJymLMZ9P8gxNbafwjxTdTXht/MUprEAePslP3AeyKBMJNYGs04/lOQzksp+
ZG6j7/XzAkEAyi9zj8EaPlleAil8mB5wDWiibQ/Z92nMLSUmH5FoO013dvumBI8c
CcP1/go2sj3H4RQEWycr360yTubNkkHOSQJAcRRPos3fOkZ8Y329k3Z6IgY+RfMj
2tQLvVG5YbAKbi0J5vuNrpJ6p+QBwfdlpvIQp6NvZOwFFEK0kuZFz/dj4wJBALyc
cZCMUoARfEpGC24ZDuzjTIqzO+G7d3Yx7pOKYRLZXHXJogEkw8I0ZXmca5PxYFIP
C1VBgINEHedPFjy3WMkCQEh3FG0xDpUFXETct5L1whT8lsN0EK3ZmcfDePcbKuHW
iE5pbNn7ytpVT+jiT3+FVEZVSZCiW0lDnyd86Ppos5g=
-----END RSA PRIVATE KEY-----

公鑰和私鑰生成好了之后,私鑰自己保存,將公鑰交給第三方即可。

2、php的RSA加密解密

在做加密解密之前,首先要確保php已經開啟了openssl拓展,可以通過phpinfo()函數進行查看。

通常情況下,有以下兩種情形:

①通過公鑰加密,通過私鑰解密;

②通過私鑰加密,通過公鑰解密;

支付寶的業務場景屬于第二種情形:

  1. 業務方支付寶發送支付請求,將sign參數通過自己的私鑰加密過后發送到支付寶的接口;
  2. 支付寶方向業務方發送支付結果,將sign參數通過自己的私鑰加密過后發送到業務方的notify接口;

下面就以支付寶的業務邏輯為例,實現以下第二種加解密:

加密:

$data = "我是待加密的字符串";
echo sign($data, 'rsa_private_key.pem');
 /* 簽名 */
function sign($data, $rsaPrivateKey) {
   /* 獲取私鑰PEM文件內容,$rsaPrivateKey是指向私鑰PEM文件的路徑 */
   $priKey = file_get_contents($rsaPrivateKey);
   /* 從PEM文件中提取私鑰 */
   $res = openssl_get_privatekey($priKey);
   /* 對數據進行簽名 */
   //openssl_sign($data, $sign, $res);
   openssl_private_encrypt($data, $sign, $res);
   /* 釋放資源 */
   openssl_free_key($res);
   /* 對簽名進行Base64編碼,變為可讀的字符串 */
   $sign = base64_encode($sign);
   return $sign;
 }

執行后得到如下字符串:

geNTbwabOYT1l2TIkaxgxnCZDop8pynyNtMNbYATtmyyOlxgJhm363ufeHbNboIhc3Pzi7kVrWPPkFsNUiGnS4mATzAcf0woJVC+26g5j19yQqb00Fr+XVipEVyN0sn9/uhlot6m6qj7h5adaREvsY/30jTld6kDkkQF8k3Eg+Y=

解密:

$data = "geNTbwabOYT1l2TIkaxgxnCZDop8pynyNtMNbYATtmyyOlxgJhm363ufeHbNboIhc3Pzi7kVrWPPkFsNUiGnS4mATzAcf0woJVC+26g5j19yQqb00Fr+XVipEVyN0sn9/uhlot6m6qj7h5adaREvsY/30jTld6kDkkQF8k3Eg+Y=";
echo decrypt($data, 'rsa_public_key.pem');
function decrypt($data, $rsaPublicKey) {
   /* 獲取公鑰PEM文件內容,$rsaPublicKey是指向公鑰PEM文件的路徑 */
   $pubKey = file_get_contents($rsaPublicKey);
   /* 從PEM文件中提取公鑰 */
   $res = openssl_get_publickey($pubKey);
   /* 對數據進行解密 */
   openssl_public_decrypt(base64_decode($data), $decrypted, $res);
   /* 釋放資源 */
   openssl_free_key($res);
   return $decrypted;
 }

第一種情形與第二種情形類似,在此不在贅述。

注:支付寶使用的加密函數是openssl_sign,之后的校驗可以使用openssl_verify函數進行校驗。

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

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php加密方法總結》、《PHP編碼與轉碼操作技巧匯總》、《PHP數學運算技巧總結》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《PHP數據結構與算法教程》、《php程序設計算法總結》及《php正則表達式用法總結》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • 六種php加密解密方法實例講解
  • PHP rsa加密解密算法原理解析
  • 基于PHP實現解密或加密Cloudflar郵箱保護
  • php中加密解密DES類的簡單使用方法示例
  • RSA實現JS前端加密與PHP后端解密功能示例
  • Js通過AES加密后PHP用Openssl解密的方法
  • PHP實現的AES雙向加密解密功能示例【128位】
  • PHP實現的XXTEA加密解密算法示例
  • PHP實現基于3DES算法加密解密字符串示例
  • PHP實現的AES加密、解密封裝類與用法示例
  • PHP實現的DES加密解密類定義與用法示例
  • 基于PHP RSA密文過長加密解密 越過1024的解決方法
  • PHP的RSA加密解密方法以及開發接口使用
  • PHP使用自定義key實現對數據加密解密的方法
  • php實現的三個常用加密解密功能函數示例
  • PHP代碼加密和擴展解密實戰

標簽:鎮江 湛江 宜賓 寶雞 黃南 南陽 婁底 銅川

巨人網絡通訊聲明:本文標題《php的RSA加密解密算法原理與用法分析》,本文關鍵詞  php,的,RSA,加密解密,算法,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《php的RSA加密解密算法原理與用法分析》相關的同類信息!
  • 本頁收集關于php的RSA加密解密算法原理與用法分析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 亚洲一区二区三区女厕偷拍| 国外性xxxnxxxf视频| 国产精品秘?精品3D动漫| 久久99久久99精品免视看婷婷| 美女视频美女网站免费| 欧美巨大巨粗黑人性AAAAAA| 亚洲精品日韩专区silk| 欧美人和日本人作爰| 女攻男受调教爽哭n四爱| 伊能静三级无删减版在线观看| 亚洲国产精品久久久久蜜桃| 金梅瓶里性的姿势图片| 插美女阴道| 爱插网| 《年轻的寡妇》中文字幕| 黄小说在线| 漂亮的背地里和同学激烈| 女人一级片| 欧美黑人性猛交????| 丰满少妇免费做爰大片人漫画| 国产亚洲漂亮白嫩美女在线| 日本视频一区二区| ok电影天堂伦理电影第一页| 无码欧精品亚洲日韩一区九色| 中文字幕永久精品免费视频| 娇妻卧室含辱迎接领导是哪部电影| 日本h在线| 亚洲成色7777777在线播放| 情爱三级| 视频在线观看大片啦啦啦| 日韩一区二区免费| 十八禁??网站视频app破解版| 美女视频在线观看免费视频网软件| 国产一级小视频| 3d电影高清免费观看| 一级全黄60分钟免费视频| 免费播放婬乱婬视频国产| 大陆5g影院天天5g天天爽入口| 最新国产精品| 日本dvd碟片下载| 国产老熟女出轨偷人视频|