php 翻譯java hmac-sha256簽名程序

前段時(shí)間項(xiàng)目H5 應(yīng)用要上架到第三方的小程序每庆,請(qǐng)求對(duì)方的接口實(shí)現(xiàn)用戶單點(diǎn)登入。接口要求參數(shù)鑒權(quán)自点,用摘要算法‘hmac-sha256’對(duì)參數(shù)進(jìn)行簽名韩脏,對(duì)方提供示例代碼用java 實(shí)現(xiàn)的,因此得用php 把對(duì)方程序翻譯一遍窒升。

簡(jiǎn)單描述一下參數(shù)的鑒權(quán)方式缀遍,首先第三方分配給

  • ak,accessKey
  • sk饱须,secretKey
  • appid域醇,上架應(yīng)用的appid

請(qǐng)求接口時(shí)要求在header 里面帶上如下四個(gè)參數(shù),簡(jiǎn)化如下:

header name desc
signature 參數(shù)簽名得到的字符串蓉媳,hmax_sha256_hex(sk, signing_str)
algorithm 簽名摘要算法 hmac-sha256
access_key ak
date_time 日期歹苦,服務(wù)端允許客戶端請(qǐng)求最大時(shí)間誤差為100s

參與簽名的字符串signing_str 是由接口請(qǐng)求方式、請(qǐng)求uri督怜、date_time殴瘦、請(qǐng)求參數(shù)組合而成的。為了方便調(diào)試看翻譯后雙方得到簽名串是否相同号杠,運(yùn)行對(duì)方提供的java 程序蚪腋。還手動(dòng)導(dǎo)入了javax.xml.bind.jar 包

java

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;

public class test {
    public static void main(String[] args) {
        try {
            String secretKey = "sk";
            String signatureStr = "POST\nuri\nparams\nak\ndate_time\n";

            Mac hasher = Mac.getInstance("HmacSHA256");
            hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256"));
            byte[] hash = hasher.doFinal(signatureStr.getBytes());
            // to lowercase hexits
            DatatypeConverter.printHexBinary(hash);
            // to base64
            String sign = DatatypeConverter.printBase64Binary(hash);

            System.out.println("signature:");
            System.out.println(sign);
        } catch (Exception e) {

        }
    }
}

輸出signature

sLsZpv5kzZ+NDxby0/mAJ5+EsV5rGG+dmSSHWXChOoE=

php 翻譯代碼

$sk = "sk";
$signingStr = "POST\nuri\nparams\nak\ndate_time\n";
$signature = base64_encode(
    hash_hmac(
        'sha256',
        $signingStr,
        $sk,
        true
    )
);

輸出signature

sLsZpv5kzZ+NDxby0/mAJ5+EsV5rGG+dmSSHWXChOoE=

說(shuō)明PHP翻譯簽名程序正確

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市姨蟋,隨后出現(xiàn)的幾起案子屉凯,更是在濱河造成了極大的恐慌,老刑警劉巖眼溶,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悠砚,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡堂飞,警方通過(guò)查閱死者的電腦和手機(jī)灌旧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門绑咱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人枢泰,你說(shuō)我怎么就攤上這事描融。” “怎么了衡蚂?”我有些...
    開(kāi)封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵窿克,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我毛甲,道長(zhǎng)年叮,這世上最難降的妖魔是什么玻募? 我笑而不...
    開(kāi)封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任谋右,我火速辦了婚禮,結(jié)果婚禮上补箍,老公的妹妹穿的比我還像新娘。我一直安慰自己啸蜜,他們只是感情好坑雅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著衬横,像睡著了一般裹粤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜂林,一...
    開(kāi)封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天遥诉,我揣著相機(jī)與錄音,去河邊找鬼噪叙。 笑死矮锈,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的睁蕾。 我是一名探鬼主播苞笨,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼子眶!你這毒婦竟也來(lái)了瀑凝?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤臭杰,失蹤者是張志新(化名)和其女友劉穎粤咪,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體渴杆,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寥枝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年宪塔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脉顿。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蝌麸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出艾疟,到底是詐尸還是另有隱情来吩,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布蔽莱,位于F島的核電站弟疆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏盗冷。R本人自食惡果不足惜怠苔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仪糖。 院中可真熱鬧柑司,春花似錦、人聲如沸锅劝。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)故爵。三九已至玻粪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間诬垂,已是汗流浹背劲室。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留结窘,地道東北人很洋。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像隧枫,于是被迫代替她去往敵國(guó)和親蹲缠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 現(xiàn)在很多云API請(qǐng)求的參數(shù)都需要加密悠垛,如騰訊云线定,阿里云。當(dāng)你在集成和調(diào)用API獲取的數(shù)據(jù)時(shí)确买,你會(huì)發(fā)現(xiàn)要對(duì)參數(shù)作很多...
    Jorn丶Wu閱讀 5,326評(píng)論 2 2
  • 引言 相信大家都會(huì)對(duì)微信支付非常熟悉斤讥,什么樣的開(kāi)發(fā)場(chǎng)景能少得了支付的環(huán)節(jié)呢? Let's do it~ 開(kāi)發(fā)接入官...
    OzanShareing閱讀 2,897評(píng)論 0 3
  • 在做微信接口開(kāi)發(fā)的過(guò)程中, 有時(shí)候發(fā)現(xiàn)會(huì)提示簽名校驗(yàn)失敗, 一模一樣的簽名邏輯就是有些接口跑步通, 找了一圈發(fā)現(xiàn)...
    憤怒的小菜雞閱讀 29,224評(píng)論 1 5
  • 使用uniapp開(kāi)發(fā)示例,原生需將uni標(biāo)簽改為wx即可(前端) uni.request({ //支付統(tǒng)一下單 ...
    IDnumber丶的兵閱讀 827評(píng)論 0 0
  • 首發(fā)于fxm5547的博客 引言 為了避免API被非法調(diào)用芭商,調(diào)用過(guò)程中被篡改和重放攻擊派草,需要增加API調(diào)用授權(quán)。對(duì)...
    fxm5547閱讀 3,511評(píng)論 0 2