業務場景
APP移動端、WEB、桌面端、第三方平臺
密碼等敏感數據加密設計
如 app端登錄密碼加密設計
對於登錄密碼 不需要進行解密 只需要加密算法結合規則進行比較 就能得到密碼正確與否
方法一(簽名保證安全)
- 密碼等敏感信息取Md5值 對所有值(加上timestamp)排序後 取SHA256哈希值(十六進制字符串) 作爲簽名
- 後臺驗證簽名
- 對password(進行過一次Md5) 進行Md5Hash(加上salt),得到真正密碼(依賴shiro包)
案例
登錄簽名流程:(賬號密碼登錄) 用戶名登錄或手機號與密碼登錄
- 用戶名或手機號 username (A)、密碼 password(B)、時間戳 timestap(D)
- MD5(B) = E
- A 、D、E 分組排(冒泡)序後產生 A1、D1、E1
- SHA256(A1+D1+E1) = F
- A、D、E、F 發送給服務器端
- 服務端按照按照(3)(4) 生成 G,與 F進行比較
方法二(數據加密保證安全)
登錄名+密碼+salt = A ,數據庫Md5Hash(A) 依賴shiro包
方法三(數據加密保證安全)
RSA加密結合AES加密算法的對稱加解密方案 ,風險是速度慢導致性能差(密碼用AES加密 保證不傳輸明文 同時AES密鑰可以有RSA加密 保證傳輸安全)
方法四(簽名保證安全)
網關服務如調度系統對接口參數進行簽名校驗,簽名算法可以使用sdk提供給外部系統 每個外部系統分配唯一的appId和appKey並提供給第三方系統 具體服務則根據sdk算法得到簽名與外部接口傳入的簽名進行對比
常用算法
常用加密、解密算法 Hash Base64 Md5 SHA256 RSA AES hmacsha1