| | |
| | | import org.bouncycastle.math.ec.ECPoint; |
| | | import org.bouncycastle.math.ec.FixedPointCombMultiplier; |
| | | |
| | | import java.io.File; |
| | | import java.math.BigInteger; |
| | | import java.security.KeyPair; |
| | | import java.security.KeyPairGenerator; |
| | |
| | | return hexString.toString().toUpperCase(); |
| | | } |
| | | |
| | | // public static void main(String[] args) throws Exception { |
| | | // // 示例哈希值(这里只是一个占位符,你应该使用实际的哈希值) |
| | | //// String sm3 = Sm3Util.calculateSM3Hash("FJHXZ,PSSJ,Longitude,Latitude,PSFYJ,PSJD,PSHGJ,PSRY,ZSDM"); |
| | | //// System.out.println("sm3 in hash: " + sm3); |
| | | public static void main(String[] args) throws Exception { |
| | | // 示例哈希值(这里只是一个占位符,你应该使用实际的哈希值) |
| | | String hxz = String.valueOf(SM3HashExample.str(("B69200D500E57054E987FFF855204B30CE6BD32FE54937C531D6F943633A97A6" |
| | | + "," + "2024-06-05 10:04:16" + "," + "115.8506321" + "," + "28.6193951" + "," + "-83" + "," + "135" + |
| | | "," + "0" + "," + "中图智绘无人机" + "," + "23C8CCC61E3042FBA6A658F319337B1A"))); |
| | | // System.out.println("sm3 in hash: " + sm3); |
| | | // byte[] hash = sm3.getBytes(); // 注意:使用SM3或其他哈希算法来计算数据的哈希值 |
| | | // |
| | | // // 加载私钥 |
| | | System.out.println(hxz); |
| | | byte[] hash = hxz.getBytes(); // 注意:使用SM3或其他哈希算法来计算数据的哈希值 |
| | | // 加载私钥 |
| | | ECPrivateKeyParameters sm2PrivateKey = getSM2PrivateKey(); |
| | | // 使用SM2私钥对哈希值进行签名 |
| | | String signatureHex = signWithSM2(hash, sm2PrivateKey); |
| | | System.out.println(signatureHex); |
| | | // 加载私钥 |
| | | // ECPrivateKeyParameters sm2PrivateKey = getSM2PrivateKey(); |
| | | // |
| | | // // 使用SM2私钥对哈希值进行签名 |
| | | // String signatureHex = signWithSM2(hash, sm2PrivateKey); |
| | | //// System.out.println("Signature in hex (uppercase): " + signatureHex); |
| | | // System.out.println("Signature in hex (uppercase): " + signatureHex); |
| | | |
| | | // //验证 |
| | | // // 示例数据哈希(SM3哈希值) |
| | | // byte[] dataHash = hash; // 注意:这里仅作为示例,你需要用实际的SM3哈希值 |
| | | // |
| | | //// //验证 |
| | | //// // 示例数据哈希(SM3哈希值) |
| | | //// byte[] dataHash = hash; // 注意:这里仅作为示例,你需要用实际的SM3哈希值 |
| | | //// |
| | | //// // 示例签名(字节数组) |
| | | //// byte[] signature = signatureHex.getBytes(); // 注意:这里仅作为示例,你需要用实际的签名值 |
| | | //// |
| | | //// // 验证签名 |
| | | //// boolean isValid = verify(dataHash, signature); |
| | | //// |
| | | //// // 输出验证结果 |
| | | //// System.out.println("Signature is valid: " + isValid); |
| | | // // 示例签名(字节数组) |
| | | // byte[] signature = signatureHex.getBytes(); // 注意:这里仅作为示例,你需要用实际的签名值 |
| | | // |
| | | // } |
| | | // // 验证签名 |
| | | // boolean isValid = verify(dataHash, signature); |
| | | // |
| | | // // 输出验证结果 |
| | | // System.out.println("Signature is valid: " + isValid); |
| | | |
| | | } |
| | | |
| | | } |