最詳細(xì)的MD5簽名的原理和流程

必須知道MD5是不可逆性


在講解MD5簽名原理之前,必須明白MD5是不可逆的,也就是不可破解的,當(dāng)然可能稍有了解的人會(huì)說MD5可以破解,當(dāng)然,網(wǎng)上也有一些強(qiáng)大的數(shù)據(jù)庫會(huì)把各種數(shù)據(jù)組合的MD5收集起來形成強(qiáng)大的數(shù)據(jù)庫,能冠軍數(shù)據(jù)庫搜索可能一些簡單的數(shù)據(jù)會(huì)馬上找出某些組合對應(yīng)的MD5值,但咱說的MD5簽名生成是最少32位的數(shù)值MD5加密,所以這個(gè)破解的可能性是非常非常非常小的。所以這還是比較安全的。

原理


原理很簡單,請求方對請求數(shù)據(jù)按一定的規(guī)則排序,加上appkey碼一起通過MD5加密生成簽名,然后把請求數(shù)據(jù)和簽名發(fā)給服務(wù)方,服務(wù)方拿到數(shù)據(jù)后,去掉appid和無用的數(shù)據(jù),通過appid找到請求方的appkey,然后按同樣的規(guī)則處理數(shù)據(jù),并加上appkey通過MD5加密也生成簽名,然后和請求方生成的簽名去對比,如果值一樣,簽名驗(yàn)證通過。

需要的東西


服務(wù)商一般會(huì)給你一個(gè)appid,appkey;同時(shí)這兩個(gè)參數(shù)服務(wù)商也會(huì)保存,這兩個(gè)形成了你的唯一標(biāo)識(shí)。
appid通過網(wǎng)絡(luò)傳輸,而appkey是不在網(wǎng)絡(luò)上進(jìn)行傳輸?shù)?,只在生成簽名時(shí)使用,所以安全性還是比較高的。

MD5生成簽名的流程

1. 除去加密數(shù)組中的空值和簽名參數(shù)
2. 對數(shù)組排序
3. 把數(shù)組所有元素,按照“參數(shù)=參數(shù)值”的模式用“&”字符拼接成字符串
4. 加上appkey值,對形成的數(shù)據(jù)進(jìn)行MD5加密,生成簽名

下面是各步聚的PHP代碼

1. 除去加密數(shù)組中的空值和簽名參數(shù)
最詳細(xì)的MD5簽名的原理和流程
2. 對數(shù)組排序
最詳細(xì)的MD5簽名的原理和流程
3.把數(shù)組所有元素,按照“參數(shù)=參數(shù)值”的模式用“&”字符拼接成字符串
最詳細(xì)的MD5簽名的原理和流程
4.加上appkey值,對形成的數(shù)據(jù)進(jìn)行MD5加密,生成簽名
最詳細(xì)的MD5簽名的原理和流程

看實(shí)例更清晰

比如我要拿下面數(shù)據(jù)去服務(wù)方接口請求:


最詳細(xì)的MD5簽名的原理和流程
  1. 第一步會(huì)把請求數(shù)組中的空值,或者沒必要的參數(shù)都去掉,得到了下面的數(shù)據(jù),這才是真正的需要的靈數(shù)據(jù)。


    最詳細(xì)的MD5簽名的原理和流程
  2. 然后對數(shù)組進(jìn)行排序,得到下面的結(jié)果。


    最詳細(xì)的MD5簽名的原理和流程
  3. 然后對數(shù)組進(jìn)行拼接,得到下在結(jié)果


    最詳細(xì)的MD5簽名的原理和流程
  4. 然后加上appkey生成最終的簽名。


    最詳細(xì)的MD5簽名的原理和流程
  5. 最后在原始數(shù)據(jù)后面加上生成的簽名,就是最終要傳給用戶的數(shù)據(jù),紅圈里的是最后加上的簽名。


    最詳細(xì)的MD5簽名的原理和流程
  6. 客戶收到數(shù)據(jù)后會(huì)拿數(shù)據(jù)去按上面方法處理,最后把生成的簽名值,和你的$data['sign']進(jìn)行比較,如果值一樣,簽名通過。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 12,306評論 6 13
  • 轉(zhuǎn)自 bang' blog 有改動(dòng)。 iOS 簽名機(jī)制挺復(fù)雜,各種證書,Provisioning Profile...
    就叫yang閱讀 885評論 0 2
  • 轉(zhuǎn):WeRead團(tuán)隊(duì)博客 iOS 簽名機(jī)制挺復(fù)雜,各種證書,Provisioning Profile,entitl...
    Uncle丶shuai閱讀 1,294評論 0 1
  • 一直覺得“再見”的意義僅限在出于禮貌的“意”而不在于其“義”的再次相見。而這種沒有實(shí)際意義的用語在我們源遠(yuǎn)流...
    渡邊志明閱讀 413評論 0 1
  • 努力和拼盡全力有什么區(qū)別?當(dāng)你努力的時(shí)候,你會(huì)覺得自己已經(jīng)拼盡全力了;當(dāng)你拼盡全力的時(shí)候,你會(huì)覺得自己還不夠努力。...
    鳳兒DuDu閱讀 508評論 0 1

友情鏈接更多精彩內(nèi)容