| | |
| | | * @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哈希值匹配 |
| | |
| | | * @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")); |