SM3加密udf

SM3加密udf

maven

```xml

<dependencies>

<!-- 配置日志 -->

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-api</artifactId>

<version>1.7.5</version>

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

<version>1.7.12</version>

</dependency>

<dependency>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

<version>1.2.17</version>

</dependency>

<!--添加Hadoop的依赖-->

<dependency>

<groupId>org.apache.hadoop</groupId>

<artifactId>hadoop-client</artifactId>

<version>3.1.1</version>

</dependency>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.11</version>

<scope>test</scope>

</dependency>

<!--添加hive依赖-->

<dependency>

<groupId>org.apache.hive</groupId>

<artifactId>hive-exec</artifactId>

<version>3.1.0</version>

</dependency>

<!--sm3,sm4加密算法-->

<dependency>

<groupId>org.bouncycastle</groupId>

<artifactId>bcprov-jdk15on</artifactId>

<version>1.66</version>

</dependency>

</dependencies>

```

java 代码

```java

import org.apache.hadoop.hive.ql.exec.UDF;

import org.bouncycastle.crypto.digests.SM3Digest;

import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;

import java.io.UnsupportedEncodingException;

public class SM3Encrypt extends UDF {

public String evaluate(String paramStr) throws Exception {

String resultHexString = "";

try {

// 将字符串转换成byte数组

byte[] srcData = paramStr.getBytes("UTF-8");

// 调用SM3加密

byte[] hash = sm3Encrypt(srcData);

// 将返回的加密字节数组转换成16进制字符串

resultHexString = ByteUtils.toHexString(hash);

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return resultHexString;

}

public static byte[] sm3Encrypt(byte[] srcData) {

SM3Digest digest = new SM3Digest();

digest.update(srcData, 0, srcData.length);

byte[] hash = new byte[digest.getDigestSize()];

digest.doFinal(hash, 0);

return hash;

}

}

```

注册udf

```shell

#1.上传jar包hiveSM3UDF-1.0-SNAPSHOT.jar到hdfs中/{上传目录}/

#2.hive中创建函数,(多个hiveserver2都需要重启)com.xxx.udf是包名

create function hiveSM3Encrypt as 'com.xxx.udf.SM3Encrypt' using jar 'hdfs:/{上传目录}/hiveSM3UDF-1.0-SNAPSHOT.jar';

#3.使用

select hiveSM3Encrypt(手机号) from table_name

```

相关推荐
customer087 分钟前
【开源免费】基于SpringBoot+Vue.JS医院管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·开源·intellij-idea
2402_8575893617 分钟前
SpringBoot框架:作业管理技术新解
java·spring boot·后端
HBryce2421 分钟前
缓存-基础概念
java·缓存
WeeJot嵌入式23 分钟前
大数据治理:确保数据的可持续性和价值
大数据
一只爱打拳的程序猿36 分钟前
【Spring】更加简单的将对象存入Spring中并使用
java·后端·spring
杨荧37 分钟前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka
minDuck39 分钟前
ruoyi-vue集成tianai-captcha验证码
java·前端·vue.js
为将者,自当识天晓地。1 小时前
c++多线程
java·开发语言
daqinzl1 小时前
java获取机器ip、mac
java·mac·ip