```xml
```
```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;
}
}
```
```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
```