需求
一些用户数据中包含诸如用户手机号等信息,直接暴露出来的话,是违法的。。。需要对数据进行脱敏,如果单纯的将手机号替换为***号,那么就意味着丢失用户的手机号数据了,因为无法再将***变回手机号。所以需要自定义UDF函数,实现敏感数据的加密解密。
这里实现了两个UDF函数,一个用于加密,一个用于解密。使用Java自带的crypto模块实现AES加密。
在代码中将两个UDF函数中的SecureRandom的Seed写死,这样加密后的数据就是固定的,可以通过解密UDF解析出原始数据。
自定义spark-sql的UDF函数需要实现UDF1、UDF2等方法,后面的数字表示UDF函数的参数个数,但是spark-sql可以使用Hive的函数库,所以直接定义Hive的UDF函数也行。我是实现的Hive的UDF函数
(高级加密标准(英语:Advanced Encryption Standard,缩写:AES),是一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。
那么为什么原来的DES会被取代呢,,原因就在于其使用56位密钥,比较容易被破解。而AES可以使用128、192、和256位密钥,并且用128位分组加密和解密数据