HMAC SHA1各語言版本實現

2021-06-19 17:03:32 字數 860 閱讀 4990

在各大開放平台大行其道的網際網路開發潮流中,呼叫各平台的api介面過程中,無一例外都會用到計算簽名值(sig值)。而在各種計算簽名的方法中,經常被採用的就是hmac-sha1,現對hmac-sha1做乙個簡單的介紹:

hmac,雜湊訊息鑑別碼,基於金鑰的hash演算法認證協議。實現原理為:利用已經公開的hash函式和私有的金鑰,來生成固定長度的訊息鑑別碼;

sha1、md5等hash演算法是比較常用的不可逆hash簽名計算方法;

base64,將任意序列的8位元組字元轉換為人眼無法直接識別的符號編碼的一種方法;

各個語言版本的實現為:

python版:

import hmac

import hashlib

import base64

hmac.new(token,data,hashlib.sha1).digest().encode('base64').rstrip()

php版:

base64_encode(hash_hmac("sha1",clientstr,token , true))

c++版(openssl):

hmac(  evp_sha1(),

/*key data*/ strkey.data(),

/*key len*/  strkey.size(),

/*data  */(unsigned char*) strrandom.data(),

/*data len*/ strrandom.size(), digest, &digest_len))

shell版:

echo -n '3f88a95c532bea70' | openssl dgst -hmac '123' -sha1 -binary | base64

C語言版本 單鏈表的實現

slist.h 1 ifndef slist h 2 define slist h 34 include5 include 6 include7 typedef int elemtype 8 typedef struct node node,pnode 12 typedef struct list ...

C語言版本 雙鏈表的實現

dlist.h 1 ifndef dlist h 2 define dlist h 34 include5 include 6 include7 typedef int elemtype 8 typedef struct node node,pnode 13 typedef struct list ...

遊戲實現多語言版本 國際化

自從換了專案組之後一直都很忙,沒什麼時間寫部落格了,目前這個專案是自己挑的,希望多花點時間,把它做好。因為專案還沒有對外公開,關於專案就不透露資訊,只能說一些實現方式。到新專案之後第乙個著手做的就是多語言版本,也就是國際化。多語言的實現最基本的實現方式就是根據id去讀語言配置,不同的語言新建乙個語言...