加簽驗籤模塊早已作完了,從剛開始的一臉懵逼,到上線,前先後後兩週多吧,如今整理一下思路,記錄一下。算法
加簽驗籤,發送消息方,對消息加簽名;接受消息方,驗證簽名是否正確。工具
作加簽驗籤的目的主要目的就是,驗證消息的完整性加密
簡單來講,排序
發送消息方:字符串
一、根據消息內容造成摘要配置
二、根據摘要造成簽名字段密碼
三、發送消息tools
接受消息方:加密算法
一、接受消息證書
二、根據消息內容造成摘要
三、根據摘要去驗證簽名是否正確
上面講的很粗略,這裏咱們從整個過程來說解一下。
首先是環境:
發消息方A、接受消息方B、一個須要發送的消息段[merNo=001,user=zhangm,pwd=abc123,check=6387]、證書生成工具tools.jar
過程:
一、使用工具生成根證書,用戶證書。
a. 填寫工具配置信息。tools會根據消息交互雙方的信息+密碼生成兩個證書,其中雙方的信息不重要,重要的是密碼。即:保存密碼。
b. tools會生成一個密鑰庫,密鑰庫的密碼是上一步設置的密碼。而後tools還會生成一個密鑰對,即公鑰和私鑰。而後將公鑰和私鑰存放到密鑰庫中。最後tools會生成兩個證書文件:根證書【能夠獲得公鑰和私鑰】、用戶證書【能夠獲得公鑰】。
c. 獲得咱們想要的東西:根證書、用戶證書、密碼。其中根證書與密碼是一塊兒的,由於從根證書中獲得私鑰是須要密碼的。【注:公鑰與私鑰其實就是兩個字符串】
二、管理證書
a. A保存根證書與密碼,B保存用戶證書。
三、發送消息
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發送消息
四、接收消息
a. B接收消息
b. B根據merNo號去匹配對應的用戶證書,而後從證書中拿到公鑰。
c. B經過與A協定好的方式,經過消息字段生成摘要[abc123001zhangm6378]
d. B經過摘要字段[abc123001zhangm6378],公鑰,簽名字段sign=w8y98hf,去作驗證是否正確。
本文僅僅是簡單的說明了一下整個加簽驗籤的思路,具體細節包括代碼就不詳細展現了,但願這個思路能給以後的本身提個醒,別忘記就好。