package com.dji.sample.territory.utils;
|
|
import org.bouncycastle.crypto.digests.SM3Digest;
|
import org.bouncycastle.util.encoders.Hex;
|
|
import java.nio.charset.StandardCharsets;
|
|
/**
|
* @PROJECT_NAME: drone
|
* @DESCRIPTION: sm3加密算法工具类
|
* @USER: aix
|
* @DATE: 2024/5/9 9:28
|
*/
|
public class Sm3Util {
|
|
/**
|
* 计算SM3哈希值
|
*
|
* @param input 输入的字符串
|
* @return SM3哈希值的十六进制字符串表示
|
*/
|
// public static String calculateSM3Hash(String input) {
|
// // 转换为字节数组
|
// byte[] inputBytes = input.getBytes(StandardCharsets.UTF_8);
|
//
|
// // 初始化SM3摘要
|
// SM3Digest digest = new SM3Digest();
|
//
|
// // 更新摘要
|
// digest.update(inputBytes, 0, inputBytes.length);
|
//
|
// // 完成摘要计算并获取结果
|
// byte[] hash = new byte[digest.getDigestSize()];
|
// digest.doFinal(hash, 0);
|
//
|
// // 将字节数组转换为十六进制大写字符串
|
// return Hex.toHexString(hash).toUpperCase();
|
// }
|
|
/**
|
* 验证给定的哈希值是否与原始数据的SM3哈希值匹配
|
*
|
* @param str 原始数据
|
* @param sm3HexString 预期的哈希值(十六进制字符串)
|
* @return 如果匹配则返回true,否则返回false
|
*/
|
// public static boolean verify(String str, String sm3HexString) {
|
//
|
// String calculatedHash = calculateSM3Hash(str);
|
// return sm3HexString.equalsIgnoreCase(calculatedHash);
|
// }
|
|
// public static void main(String[] args) {
|
// System.out.println(calculateSM3Hash("123"));
|
// System.out.println(verify("1234", calculateSM3Hash("123")));
|
// }
|
|
}
|