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 bytedigest.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

```

相关推荐
无限的鲜花3 小时前
反射(原创推荐)
java·开发语言
运维行者_3 小时前
企业无线网络监控的挑战与智能化演进趋势
大数据·运维·服务器·网络·数据库
IT二叔3 小时前
Java项目部署-03-teamcity-cicd-docker镜像流水线方式部署
java·ci/cd·持续部署
一路向北he3 小时前
字节钢铁军团--“提供情境,而非控制”
java·开发语言·前端
QiLinkOS3 小时前
第三视觉理解徐玉生与他的商业活动(30)
大数据·c++·人工智能·算法·开源协议
超级数据查看器4 小时前
超级数据查看器 v10.0 发布
java·大数据·数据库·sqlite·安卓
数安3000天4 小时前
增量数据如何自动分类分级,避免目录“过期“?
大数据·数据库
折哥的程序人生 · 物流技术专研5 小时前
《Java 100 天进阶之路》第50篇:阻塞队列与并发容器(2026版)
java·面试题·java进阶·blockingqueue·并发容器·集合源码·java100天进阶
ai_coder_ai5 小时前
编写自动化脚本,在自己后端服务中使用Open Api进行设备相关操作
java·运维·自动化
硕风和炜6 小时前
【LeetCode: 2492. 两个城市间路径的最小分数 + DFS】
java·算法·leetcode·深度优先·dfs·bfs·并查集