成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP hash 接口對接

kel / 2695人閱讀

摘要:另外說到請求對方接口的問題,對方要求傳遞一個參數(shù)過去,比如結果提示但是沒問題于是對參數(shù)再進行一次但對方有時候接受的參數(shù)解析出錯于是有了如下處理傳遞時也改成安全

最近接一個項目,需要調(diào)用對方接口生成 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 
也可以在線測試 https://blog.zhengxianjun.com/online-tool/hash/


var str = "123456";
CryptoJS.MD5(str);




var str = "123456";
var password = "password";
 
// Hmac 相關調(diào)用前都增加了 Hmac
CryptoJS.HmacMD5(str, password);
CryptoJS.HmacRIPEMD160(str, password);
CryptoJS.HmacSHA1(str, password);

但是我們的項目是基于 PHP 于是有了

$sign = base64_encode(hash_hmac("sha1", $sign, $key)); 

果然 PHP 是最好的語言,一句話搞定。

另外說到請求對方接口的問題,對方要求傳遞一個 json 參數(shù)過去,比如

$url = "xxxxx.com";
$data = ["limit" => ["start" => 0, "end" => 5]];
$res = curlGet($url."/api/?".json_encode($data);

結果提示 fail Malformed HTTP request line
但是 python get 沒問題

res = requests.get(url, params=data, headers=headers)

于是對參數(shù)再進行一次 base64

$res =curlGet($url."/api/?".base64_encode(json_encode($data));

但對方有時候接受的參數(shù) base64 解析出錯

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

傳遞時也改成 安全 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));

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/28137.html

相關文章

  • PHP對接1688跨境鋪貨功能sdk使用說明

    摘要:文件說明文件夾各接口封裝類各接口回調(diào)控制器路由文件調(diào)用方法實例化時需要傳入?yún)?shù)參數(shù)就是將要調(diào)用接口的名稱參數(shù)列表跨境場景獲取商品詳情跨境場景獲取商品列表跨境場景下將商品加入鋪貨列表同步鋪貨結果批量添加子賬 文件說明 /app/Component/Ali/Sdk -- sdk文件夾 /app/Component/Ali/AliApi.php -- 1688各接口封裝類 /app/Com...

    Hegel_Gu 評論0 收藏0
  • 自建網(wǎng)站對接微信公眾號

    摘要:自建網(wǎng)站對接微信公眾號微信公眾號技術平常我們有些寫各種網(wǎng)站個人博客系統(tǒng)物流管理系統(tǒng)通信錄管理系統(tǒng)校園二手網(wǎng)站我們都知道只需要租用一個服務器再配置一個備案好的域名就可以在瀏覽器上進行訪問了不知大家不知大家有沒有想過將你搭的網(wǎng)站對接微信公眾 title: 自建網(wǎng)站對接微信公眾號date: 2018-04-12 15:25tags: 微信公眾號, PHP codeigniter cat...

    mylxsw 評論0 收藏0
  • 手把手教你小程序對接微信支付

    摘要:按著我的步驟一步一步操作,你就可以成功的到這個微信支付技能包。原文鏈接手把手教你實現(xiàn)小程序微信支付由于自己本身就是開發(fā)的,所以只涉及到微信支付的開發(fā)。我將會一步一步的記錄如何實現(xiàn)微信支付的。第一步先上微信支付開發(fā)文檔境內(nèi)普通商戶里面下載與。 這是我自己研究了兩天的微信支付整理得的開發(fā)筆記,然后在這里分享給大家,讓大家快速上手微信支付。 按著我的步驟一步一步操作,你就可以成功的get到這...

    XBaron 評論0 收藏0
  • PHP DES-ECB加密對接Java解密

    摘要:最近公司有個業(yè)務,需要對接第三方接口,但是參數(shù)是需要加密的,對方也只提供了一個的,在網(wǎng)上到處搜索,沒有找到直接就能用的方法,后來還是跟公司的工程師對接出來的,在這里記錄一下大致的流程。 最近公司有個業(yè)務,需要對接第三方接口,但是參數(shù)是需要加密的,對方也只提供了一個java的demo,在網(wǎng)上到處搜索,沒有找到直接就能用的方法,后來還是跟公司的Android工程師對接出來的,在這里記錄一下...

    jsliang 評論0 收藏0

發(fā)表評論

0條評論

kel

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<