前言
加密存储是将敏感信息(如:身份证、银行卡、密码、薪资数据等)通过一定的算法加密后保存至数据库,避免开发或运维直接从数据库查看到敏感信息。加密的目的,符合不同国家地区的数据政策,也可以对一些特殊表进行敏感程度降级,方便问题排查。
几种加密应用
(1)md5:签名算法,单向不可逆。主要应用于不需要解密出原始数据,只需要将两次加密后的内容作比较,验证两次数据是否一致的场景(如:加密用户的登录密码、文档防篡改验证、往来报文的重复性校验等)。
(2)RSA:非对称加密,公钥加密,私钥解密。主要应用于加密后仍需要后续可以解密出原始数据的场景(如:身份证、银行卡、数据库链接密码等)。实现方式一般为,由可信任的第三方平台提供公钥sdk以及托管私钥,敏感数据落库前使用公钥sdk加密敏感信息,页面展示或者为下游系统提供数据时,请求第三方平台进行解密。
(3)SHA:签名算法,不可逆。主要应用于开放平台提供的OpenAPI时,对客户端请求进行签名。实现方式一般为,开放平台为每个APP生成一对clientId、clientSecret,客户端通过clientSecret对请求(请求方式字符串+接口相对路径+请求参数字符串+请求头字符串)进行签名,以16进制格式输出,经Base64编码生成最终签名串。此外为了传输过程安全,防止回放攻击等,还需要将Version、TimeStamp、Nonce等,与Signature一起放于请求头上。