rain
2024-06-14 8d9a2d656e4ae007590c622e5f7c228adacdca49
src/main/java/com/dji/sample/territory/utils/Sm3Util.java
@@ -19,23 +19,23 @@
     * @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();
    }
//    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哈希值匹配
@@ -44,11 +44,11 @@
     * @param sm3HexString 预期的哈希值(十六进制字符串)
     * @return 如果匹配则返回true,否则返回false
     */
    public static boolean verify(String str, String sm3HexString) {
        String calculatedHash = calculateSM3Hash(str);
        return sm3HexString.equalsIgnoreCase(calculatedHash);
    }
//    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"));