业务场景
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