古詩詞大全網 - 個性簽名 - 報文加密和簽名設計

報文加密和簽名設計

數據信息安全對我們每個人都有很重要的意義,從接觸互聯網起,我就明白了數據的重要性,我對數據安全的要求極其高,毫不誇張的說我的電話從來沒有接過推銷和騷擾電話,我本人很討厭這種事情,對買賣數據和泄露數據的事情比較痛恨,自從做了金融以後,我對數據安全的認識又有了新的認識,接過幾家支付通道後,對支付方面的業務有了了解,根據業務需要我開始寫支付外放接口,說實話安全設計很讓我頭痛,最初使用的方式是對報文進行 MD5 加密,並得出壹個簽名串, 簽名串=MD5(原文&密鑰) ,如果黑客截取報文,並篡改報文,那麽服務端進行驗簽的時候,將不會通過,因為報文變化了,算出的簽名串會改變,那麽黑客需要重新計算出簽名串,要算出簽名串,需要知道加密規則,密鑰,這種方式雖然保證了安全,但是存在壹個問題,報文是暴露的,黑客並不更改數據,他只是記錄保存妳暴露的數據,這樣也是非常危險的,經過借鑒和學習采用了另壹種解決方案, 為保證接口調用過程中報文的完整性,報文使用 MD5 簽名算法,為保證接口調用過程中對用戶的敏感信息的保護,對涉及用戶敏感信息(如賬號,名稱,手機號等)的域進行 AES 加密

采用 MD5(data+"&key="+md5Key).toUpperCase() 方式簽名,其中: md5Key 為自己規定的 MD5 簽名密鑰。最後將獲取到的簽名串轉換為大寫。設所有發送或者接收到的數據為集合M,將集合M 內非空參數值的參數按照參數名 ASCII 碼從小到大排序( 字典序),得到字符串,使用 URL 鍵值對的格式( 即 key1=value1&key2=value2 … ) 拼接成字符串 data 。在 data 最後拼接上 key 並對其進行 MD5 運算,再將得到的字符串所有字符轉換為大寫,得到簽名值。

AES 加密模式為 "AES/ECB/PKCS5Padding" ,待加密數據使用 AESKey 加密之後做 Base64 得到加密數據。 AESKey 長度為16 位,由26個字母和數字組成。

博客原文地址: 報文加密和簽名設計