您好,登錄后才能下訂單哦!
一、最近有項目接入了第四方支付,第四方支付提供的文檔需要兩邊進行openssl配合私鑰、公鑰進行RSA加密來雙方通信
二、環境說明
1、LAMP、LNMP都可以,我的環境暫時是LAMP
2、php先安裝openssl擴展,否則使用函數會報錯,具體openssl擴展可以去百度或者參考博客文檔
三、代碼實現
1、發送加密數據
<?php
//加密
//組成加密數據
$arr = array(
'name' => 'test', //第三方平臺的會員賬號
'password' => 'test', //第三方平臺的會員密碼
'amount' => '100', //轉賬金額,最低100,為100的整數倍
'order_sn' => '123456789abc', //數商交易所生成的訂單號(第三方平臺在處理完畢后需要回傳)
'sign' => '86e06157205d5155f5fdddcf077604fd', //數商交易所生成的sign(第三方平臺在處理完畢后需要回傳)
);
//先轉成json格式的數據
$arr = json_encode($arr);
//根據私鑰獲取加密字符串
$key = "私鑰內容串";
$res = "-----BEGIN PUBLIC KEY-----\n" .
wordwrap($key, 64, "\n", true) .
"\n-----END PUBLIC KEY-----";
openssl_private_encrypt($arr, $data, $res);
//base64編碼
$data = base64_encode($data);
//發送POST請求
$to_arr = array(
'data' => $data
);
//POST請求忽略
2、獲取加密串解密
<?php
//解密
$data = "第四方返回的data加密串";
$key= "第四方提供的公鑰內容串";
$res = "-----BEGIN PUBLIC KEY-----\n" .
wordwrap($pubKey, 64, "\n", true) .
"\n-----END PUBLIC KEY-----";
//解密字符串
$crypto = '';
foreach (str_split(base64_decode($data), 128) as $chunk) {
openssl_public_decrypt($chunk, $decryptData, $res);//$decryptData為解密后的數據
$crypto .= $decryptData;
}
//解析json數據得到數組
$arr = json_decode($crypto);
//打印結果
var_dump($arr);
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。