您現在的位置是:首頁 > 棋牌
對加簽驗籤的理解
- 由 trueBubble 發表于 棋牌
- 2021-10-23
加非驗證怎麼理解
前言
加簽驗籤模組早已做完了,從剛開始的一臉懵逼,到上線,前前後後兩週多吧,現在整理一下思路,記錄一下。
什麼是加簽驗籤
加簽驗籤,傳送訊息方,對訊息加簽名;接受訊息方,驗證簽名是否正確。
為什麼要做加簽驗籤
做加簽驗籤的目的主要目的就是,驗證訊息的完整性
如何做加簽驗籤
簡單來說,
傳送訊息方:
1、根據訊息內容形成摘要
2、根據摘要形成簽名欄位
3、傳送訊息
接受訊息方:
1、接受訊息
2、根據訊息內容形成摘要
3、根據摘要去驗證簽名是否正確
詳細思路
上面講的很粗略,這裡我們從整個過程來講解一下。
首先是環境:
發訊息方A、接受訊息方B、一個需要傳送的訊息段[merNo=001,user=zhangm,pwd=abc123,check=6387]、證書生成工具tools。jar
過程:
1、使用工具生成根證書,使用者證書。
a。 填寫工具配置資訊。tools會根據訊息互動雙方的資訊+密碼生成兩個證書,其中雙方的資訊不重要,重要的是密碼。即:儲存密碼。
b。 tools會生成一個金鑰庫,金鑰庫的密碼是上一步設定的密碼。然後tools還會生成一個金鑰對,即公鑰和私鑰。然後將公鑰和私鑰存放到金鑰庫中。最後tools會生成兩個證書檔案:根證書【可以得到公鑰和私鑰】、使用者證書【可以得到公鑰】。
c。 得到我們想要的東西:根證書、使用者證書、密碼。其中根證書與密碼是一起的,因為從根證書中得到私鑰是需要密碼的。【注:公鑰與私鑰其實就是兩個字串】
2、管理證書
a。 A儲存根證書與密碼,B儲存使用者證書。
3、傳送訊息
a。 A透過訊息[merNo=001,user=zhangm,pwd=abc123,check=6387]形成摘要,摘要的形成方式自行選擇,一般來講是透過整個訊息段做摘要。這裡提供一個摘要形成方式:對三個訊息欄位的值進行一個自定義的排序,形成一個摘要,比如:摘要欄位[abc123001zhangm6378],這是一種比較簡單的摘要形成方式。複雜一點的有先對整個訊息透過加密演算法進行加密形成加密訊息作為摘要。
b。 A透過根證書與密碼得到公鑰和私鑰
c。 A透過公鑰和私鑰對摘要欄位進行簽名,形成簽名欄位。說白了,就是對上一步形成的摘要[abc123001zhangm6378]透過公鑰和私鑰形成一個加密的串。假設簽名欄位【加密串】為:w8y98hf。【實際會很長】。
d。 A重新組裝訊息。將簽名欄位放到訊息體中。[merNo=001,user=zhangm,pwd=abc123,check=6387,sign=w8y98hf]
e。 A傳送訊息
4、接收訊息
a。 B接收訊息
b。 B根據merNo號去匹配對應的使用者證書,然後從證書中拿到公鑰。
c。 B透過與A協定好的方式,透過訊息欄位生成摘要[abc123001zhangm6378]
d。 B透過摘要欄位[abc123001zhangm6378],公鑰,簽名欄位sign=w8y98hf,去做驗證是否正確。
附錄:
本文僅僅是簡單的說明了一下整個加簽驗籤的思路,具體細節包括程式碼就不詳細展示了,希望這個思路能給之後的自己提個醒,別忘記就好。
作者:
挾天子以令諸侯
出處:
http://www。cnblogs。com/gdayq/