溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php openssl base64解密

發(fā)布時(shí)間:2020-07-23 08:47:39 來源:網(wǎng)絡(luò) 閱讀:1446 作者:霍比特人666 欄目:開發(fā)技術(shù)

一、最近有項(xiàng)目接入了第四方支付,第四方支付提供的文檔需要兩邊進(jìn)行openssl配合私鑰、公鑰進(jìn)行RSA加密來雙方通信


二、環(huán)境說明

1、LAMP、LNMP都可以,我的環(huán)境暫時(shí)是LAMP

2、php先安裝openssl擴(kuò)展,否則使用函數(shù)會(huì)報(bào)錯(cuò),具體openssl擴(kuò)展可以去百度或者參考博客文檔


三、代碼實(shí)現(xiàn)

1、發(fā)送加密數(shù)據(jù)

php openssl base64解密

<?php

//加密

//組成加密數(shù)據(jù)

$arr = array(

'name' => 'test', //第三方平臺(tái)的會(huì)員賬號(hào)

'password' => 'test', //第三方平臺(tái)的會(huì)員密碼

'amount' => '100', //轉(zhuǎn)賬金額,最低100,為100的整數(shù)倍

'order_sn' => '123456789abc', //數(shù)商交易所生成的訂單號(hào)(第三方平臺(tái)在處理完畢后需要回傳)

'sign' => '86e06157205d5155f5fdddcf077604fd', //數(shù)商交易所生成的sign(第三方平臺(tái)在處理完畢后需要回傳)

);

//先轉(zhuǎn)成json格式的數(shù)據(jù)

$arr = json_encode($arr);

//根據(jù)私鑰獲取加密字符串

$key = "私鑰內(nèi)容串";

$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);

//發(fā)送POST請(qǐng)求

$to_arr = array(

'data' => $data

);

//POST請(qǐng)求忽略


2、獲取加密串解密

php openssl base64解密

<?php

//解密

$data = "第四方返回的data加密串";

$key= "第四方提供的公鑰內(nèi)容串";

$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為解密后的數(shù)據(jù)

    $crypto .= $decryptData;

}

//解析json數(shù)據(jù)得到數(shù)組

$arr = json_decode($crypto);

//打印結(jié)果

var_dump($arr);


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI