在各大開放平台大行其道的網際網路開發潮流中,呼叫各平台的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去讀語言配置,不同的語言新建乙個語言...