失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 国密算法SM2加解密数据 解密出现异常

国密算法SM2加解密数据 解密出现异常

时间:2022-01-13 12:46:07

相关推荐

国密算法SM2加解密数据 解密出现异常

参考开源项目:/ZZMarquis/gmhelper

旧标准的加密排序C!C2C3 新标准 C!C3C2C1为65字节第1字节为压缩标识,这里固定为0x04,后面64字节为xy分量各32字节。C3为32字节。C2长度与原文一致。

如果密文转成byte数组 第一个元素不是0x04,那么需要进行数组copy

public void testYouChu(){//密文String miwei = "gcFp1B4g6FZ3WzDk40WN1E5Lk6VN6w6MPErq3DhKH5GDj1buZD/5l03kVdnKE3l1YsBx9wuvzsTPLuR3MAw++OSHx/ekERIKthJts3VXBzLCxAPVRDZbfVyOlUwM3wOrlbZmD5pvDeZlqc2UrCoYHw==";BASE64Decoder decoder = new BASE64Decoder();try {byte[] bytes = decoder.decodeBuffer(miwei);byte[] bytes1 = new byte[bytes.length+1];bytes1[0]=04;System.arraycopy(bytes, 0, bytes1, 1, bytes.length);System.out.println("SM2 decrypt result:\n" + ByteUtils.toHexString(bytes1));//私钥 String priHex = "5CBC68F46DA40C3FCA12EFF7C99F1306577B25BB86837FD99558DD1FD1AEC430";ECPrivateKeyParameters priKey = new ECPrivateKeyParameters(new BigInteger(ByteUtils.fromHexString(priHex)), SM2Util.DOMAIN_PARAMS);byte[] decryptedData = SM2Util.decrypt(Mode.C1C3C2, priKey, bytes1);System.out.println("SM2 decrypt result:\n" + ByteUtils.toHexString(decryptedData));} catch (Exception ex) {ex.printStackTrace();Assert.fail();}}

如果觉得《国密算法SM2加解密数据 解密出现异常》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。