当前位置: 首页 > news >正文

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
```

http://www.lryc.cn/news/209554.html

相关文章:

  • ce从初阶到大牛(两台主机免密登录)
  • CS224W2.3——传统基于特征的方法(图层级特征)
  • 【CSS】包含块
  • [SpringCloud] Nacos 简介
  • TypeScript - 字符串的字面类型
  • CRM客户管理系统源码 带移动端APP+H5+小程序
  • Mac版好用的Git客户端 Fork 免激活
  • 有一个带头结点的单链表L,设计一个算法使其元素递增有序
  • JAVA将EEE MMM dd HH:mm:ss zzz yyyy日期格式化为yyyy-MM-dd HH:mm:ss形式
  • 【Qt】文件系统
  • PostgreSQL 基础知识
  • 基于 ResNet18 架构使用 deformable convolution的车道线检测
  • C++in/out输入输出流[IO流]
  • MongoDB的安装
  • SQL查询优化---如何查询截取分析
  • vue3基础流程
  • Vue 数据绑定 和 数据渲染
  • 【原创】解决Kotlin无法使用@Slf4j注解的问题
  • CDN是如何实现全球节点同步的
  • Centos7 Linux系统下生成https的crt和key证书
  • 性能测试工具——Jmeter的安装【超详细】
  • 系列三十、Spring AOP vs AspectJ AOP
  • 面向对象设计模式——策略模式
  • Kubernetes - Ingress HTTP 负载搭建部署解决方案(新版本v1.21+)
  • 刚刚:腾讯云3年轻量2核2G4M服务器优惠价格366元三年
  • `include指令【FPGA】
  • iphone备份后怎么转到新手机,iphone备份在哪里查看
  • JAVA毕业设计106—基于Java+Springboot的外卖系统(源码+数据库)
  • SpringCore完整学习教程4,入门级别
  • 如何能在项目具体编码实现之前能尽可能早的发现问题并解决问题