SpringMvc中敏感字加密

一 、应用场景

       在开发一些项目的时候,往往很常联系上用户的真实姓名,身份证号码这样的敏感信息 。我们不想把真实数据暴露到某些地方,像客户端上的获奖用户信息,甚至是数据库。但是在做其他业务的时候又需要用到这些数据,所以我们不能使用类似于md5的加密算法,因为这类算法是不可逆的。


二、MySql的加密函数

其实这类需求是非常简单就可以实现的,如果你了解mysql的加密函数:

1、AES_ENCRYPT和AES_DECRYPT:   

       语法:  加密  aes_encrypt(str,key)

                   解密  aes_decrypt(str,key)     

       -->str:要解密或要加密的字符    key:自定义秘钥

aes_encrypt函数返回的是自定秘钥key对字符串str利用高级加密标准(AES)算法加密后的结果,结果是一个二进制的字符串,以BLOB类型存储。

aes_decrypt函数则是对AES方式加密的数据进行解密,若检测到无效数据或不正确的填充,函数会返回null。

这种加密方式也是MYSQL中最普遍使用,而且最安全的加密函数。

扫描二维码关注公众号,回复: 2260665 查看本文章

2.  ENCODE 和 DECODE

这种方式跟第一种方法,使用的方式是一样的,也是通过自定义的密钥对数据进行加密,返回一个二进制的字符串,以BLOB类型存储。只要使用正确的秘钥进行解密即可。但是这种方式没有使用到AES加密算法,所以没有那么安全。

3.ENCRYPT

使用UNIX crypt()系统加密字符串, encrypt(str,salt)函数接收要加密的字符串和用于加密过程的salt(一个可以确定唯一口令的字符串)。但是这函数在Windows上不可用。


三、 敏感字加密

1、 在任意一个 .properties配置文件,确定一个key  例: 

               


2、在service中使用@Value标签将值引入

    @Value("msg.timeout")
    private String key;

3、将key作为参数调用mapper

userInfoMapper.updateByPrimaryKey(userInfo,key);

4、mapper

int updateByPrimaryKey(@Param("record") UserInfo record, @Param("key") String key);
5、在mapper配置文件中,只需要使用aes_encrypt(str,key),方式就可以了。(记得把mysql中这一列的类型改为blob)

6、查询的时候也是将key传入,使用aes_decrypt(Str,key)解码既可。



 



猜你喜欢

转载自blog.csdn.net/hangbingbihai/article/details/80569940
今日推荐