摘要:另外說(shuō)到請(qǐng)求對(duì)方接口的問(wèn)題,對(duì)方要求傳遞一個(gè)參數(shù)過(guò)去,比如結(jié)果提示但是沒(méi)問(wèn)題于是對(duì)參數(shù)再進(jìn)行一次但對(duì)方有時(shí)候接受的參數(shù)解析出錯(cuò)于是有了如下處理傳遞時(shí)也改成安全
最近接一個(gè)項(xiàng)目,需要調(diào)用對(duì)方接口生成 token 但只提供了 node 版,源代碼如下
//https://blog.zhengxianjun.com/2015/05/javascript-crypto-js/ npm install crypto-js var CryptoJS = require("crypto-js") calSignature = function (toSign, key) { var hash, hex, signed; hash = CryptoJS.HmacSHA1(toSign, key); hex = hash.toString(CryptoJS.enc.Hex); signed = base64.encodeBase64(hex); return signed; }; var hmacSHA1 = CryptoJS.HmacSHA1("Message", "Secret Passphrase").toString(CryptoJS.enc.Hex); console.log(hmacSHA1) ;//e90f713295ea4cc06c92c9248696ffafc5d01faf 也可以在線(xiàn)測(cè)試 https://blog.zhengxianjun.com/online-tool/hash/ var str = "123456"; CryptoJS.MD5(str); var str = "123456"; var password = "password"; // Hmac 相關(guān)調(diào)用前都增加了 Hmac CryptoJS.HmacMD5(str, password); CryptoJS.HmacRIPEMD160(str, password); CryptoJS.HmacSHA1(str, password);
但是我們的項(xiàng)目是基于 PHP 于是有了
$sign = base64_encode(hash_hmac("sha1", $sign, $key));
果然 PHP 是最好的語(yǔ)言,一句話(huà)搞定。
另外說(shuō)到請(qǐng)求對(duì)方接口的問(wèn)題,對(duì)方要求傳遞一個(gè) json 參數(shù)過(guò)去,比如
$url = "xxxxx.com"; $data = ["limit" => ["start" => 0, "end" => 5]]; $res = curlGet($url."/api/?".json_encode($data);
結(jié)果提示 fail Malformed HTTP request line
但是 python get 沒(méi)問(wèn)題
res = requests.get(url, params=data, headers=headers)
于是對(duì)參數(shù)再進(jìn)行一次 base64
$res =curlGet($url."/api/?".base64_encode(json_encode($data));
但對(duì)方有時(shí)候接受的參數(shù) base64 解析出錯(cuò)
>>> s="eyJsaW1pdCI6eyJzdGFydCI6MCwiZW5kIjo1fSwidGFibGVfbmFtZSI6Im9ubGluZV91dl9hY 2NvdW50X2lkXzFob3VyX2FuYWx5c2lzX2RhdGEiLCJmaWx0ZXJfYXJncyI6eyJ2ZmlkIjoiMTQiLCJ0a W1lc3RhbXBfMWhvdXIiOiIyMDE4LTAxLTA1IDIwOjA0OjI2In0sImJpel9kZXMwMSI6MCwib3JkZXJfY nkiOiJ0aW1lc3RhbXBfMWhvdXIifQ" >>> base64.b64decode(s) Traceback (most recent call last): File "", line 1, in File "d:python27libase64.py", line 76, in b64decode raise TypeError(msg) TypeError: Incorrect padding >>> base64.b64decode(s+"===") "{"limit":{"start":0,"end":5}" 于是有了如下處理 def decode_base64(data): missing_padding = len(data) % 4 if missing_padding != 0: data += b"="* (4 - missing_padding) return base64.decodestring(data)
傳遞時(shí)也改成 安全 base64
function urlsafe_b64encode($string) { $data = base64_encode($string); $data = str_replace(array("+","/","="),array("-","_",""),$data); return $data; } function urlsafe_b64decode($string) { $data = str_replace(array("-","_"),array("+","/"),$string); $mod4 = strlen($data) % 4; if ($mod4) { $data .= substr("====", $mod4); } return base64_decode($data); } $res =curlGet($url."/api/?".urlsafe_b64encode(json_encode($data));
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/28137.html
摘要:文件說(shuō)明文件夾各接口封裝類(lèi)各接口回調(diào)控制器路由文件調(diào)用方法實(shí)例化時(shí)需要傳入?yún)?shù)參數(shù)就是將要調(diào)用接口的名稱(chēng)參數(shù)列表跨境場(chǎng)景獲取商品詳情跨境場(chǎng)景獲取商品列表跨境場(chǎng)景下將商品加入鋪貨列表同步鋪貨結(jié)果批量添加子賬 文件說(shuō)明 /app/Component/Ali/Sdk -- sdk文件夾 /app/Component/Ali/AliApi.php -- 1688各接口封裝類(lèi) /app/Com...
摘要:自建網(wǎng)站對(duì)接微信公眾號(hào)微信公眾號(hào)技術(shù)平常我們有些寫(xiě)各種網(wǎng)站個(gè)人博客系統(tǒng)物流管理系統(tǒng)通信錄管理系統(tǒng)校園二手網(wǎng)站我們都知道只需要租用一個(gè)服務(wù)器再配置一個(gè)備案好的域名就可以在瀏覽器上進(jìn)行訪(fǎng)問(wèn)了不知大家不知大家有沒(méi)有想過(guò)將你搭的網(wǎng)站對(duì)接微信公眾 title: 自建網(wǎng)站對(duì)接微信公眾號(hào)date: 2018-04-12 15:25tags: 微信公眾號(hào), PHP codeigniter cat...
摘要:按著我的步驟一步一步操作,你就可以成功的到這個(gè)微信支付技能包。原文鏈接手把手教你實(shí)現(xiàn)小程序微信支付由于自己本身就是開(kāi)發(fā)的,所以只涉及到微信支付的開(kāi)發(fā)。我將會(huì)一步一步的記錄如何實(shí)現(xiàn)微信支付的。第一步先上微信支付開(kāi)發(fā)文檔境內(nèi)普通商戶(hù)里面下載與。 這是我自己研究了兩天的微信支付整理得的開(kāi)發(fā)筆記,然后在這里分享給大家,讓大家快速上手微信支付。 按著我的步驟一步一步操作,你就可以成功的get到這...
摘要:最近公司有個(gè)業(yè)務(wù),需要對(duì)接第三方接口,但是參數(shù)是需要加密的,對(duì)方也只提供了一個(gè)的,在網(wǎng)上到處搜索,沒(méi)有找到直接就能用的方法,后來(lái)還是跟公司的工程師對(duì)接出來(lái)的,在這里記錄一下大致的流程。 最近公司有個(gè)業(yè)務(wù),需要對(duì)接第三方接口,但是參數(shù)是需要加密的,對(duì)方也只提供了一個(gè)java的demo,在網(wǎng)上到處搜索,沒(méi)有找到直接就能用的方法,后來(lái)還是跟公司的Android工程師對(duì)接出來(lái)的,在這里記錄一下...
閱讀 2676·2023-04-25 20:19
閱讀 1930·2021-11-24 09:38
閱讀 1632·2021-11-16 11:44
閱讀 4341·2021-09-02 15:40
閱讀 1317·2019-08-30 15:55
閱讀 2022·2019-08-30 15:52
閱讀 3759·2019-08-29 17:20
閱讀 2247·2019-08-29 13:48