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"))); // } }