package org.sxkj.common.utils.sm3; import org.sxkj.common.utils.jym.SM2SignVO; import org.sxkj.common.utils.jym.SM2SignVerUtils; import org.sxkj.common.utils.jym.Util; import org.bouncycastle.crypto.digests.SM3Digest; import org.bouncycastle.util.encoders.Hex; import java.nio.charset.StandardCharsets; public class SM3 { public static String sm3(byte[] data) { byte[] md = new byte[32]; SM3Digest sm3 = new SM3Digest(); sm3.update(data, 0, data.length); sm3.doFinal(md, 0); String s = new String(Hex.encode(md)); return s.toUpperCase(); } public static String sm3(String input) { // 将输入的字符串转换为字节数组 byte[] data = input.getBytes(); // 创建一个字节数组,用于存储加密结果 byte[] md = new byte[32]; // 创建SM3加密对象 SM3Digest sm3 = new SM3Digest(); // 更新加密对象,传入数据 sm3.update(data, 0, data.length); // 完成加密,并将结果存储到md数组 sm3.doFinal(md, 0); // 将字节数组转换为十六进制字符串 String s = new String(Hex.encode(md)); // 返回大写的十六进制字符串 return s.toUpperCase(); } public static String addJym(StringBuffer buffer) throws Exception { String hash = SM3.sm3(buffer.toString()); String privateKey = "23E57DA1E4AB865CCBC325B668762207DEF74345B782237808AE0BABDF26734D"; SM2SignVO sm2signv0 = SM2SignVerUtils.Sign2SM2(Util.hexStringToBytes(privateKey), hash.getBytes(StandardCharsets.UTF_8)); return sm2signv0.getSm2_signForHard().toUpperCase(); } public static StringBuffer addStringBuffer(String FJHXZ, String PSSJ, Double Longitude, Double Latitude, int PSFYJ, int PSJD, int PSHGJ, String PSRY, String ZSDM) { StringBuffer buffer = new StringBuffer(); // 添加参数到 StringBuffer buffer.append(FJHXZ).append(","); buffer.append(PSSJ).append(","); buffer.append(Longitude).append(","); buffer.append(Latitude).append(","); buffer.append(PSFYJ).append(","); buffer.append(PSJD).append(","); buffer.append(PSHGJ).append(","); buffer.append(PSRY).append(","); buffer.append(ZSDM); return buffer; } }