From fcc53684cdccf04f3ca06e70b48fe8e0f83e8977 Mon Sep 17 00:00:00 2001 From: thinkgem Date: Tue, 23 Jul 2024 19:44:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20SM2Utils=E3=80=81SM3Utils?= =?UTF-8?q?=E3=80=81SM4Utils=20=E5=9B=BD=E5=AF=86=E7=AE=97=E6=B3=95?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E7=B1=BB=E5=8F=8A=E6=B5=8B=E8=AF=95=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jeesite/test/codec/SM2UtilsTest.java | 47 +++++++++++++++++++ .../com/jeesite/test/codec/SM3UtilsTest.java | 34 ++++++++++++++ .../com/jeesite/test/codec/SM4UtilsTest.java | 39 +++++++++++++++ 3 files changed, 120 insertions(+) create mode 100644 modules/core/src/test/java/com/jeesite/test/codec/SM2UtilsTest.java create mode 100644 modules/core/src/test/java/com/jeesite/test/codec/SM3UtilsTest.java create mode 100644 modules/core/src/test/java/com/jeesite/test/codec/SM4UtilsTest.java diff --git a/modules/core/src/test/java/com/jeesite/test/codec/SM2UtilsTest.java b/modules/core/src/test/java/com/jeesite/test/codec/SM2UtilsTest.java new file mode 100644 index 00000000..af8a8110 --- /dev/null +++ b/modules/core/src/test/java/com/jeesite/test/codec/SM2UtilsTest.java @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.test.codec; + +import com.jeesite.common.codec.EncodeUtils; +import com.jeesite.common.codec.SM2Utils; + +import java.nio.charset.StandardCharsets; +import java.security.PrivateKey; +import java.security.PublicKey; + +/** + * 国密 SM2 加密解密工具类,非对称加密 + * @author ThinkGem + * @version 2024-07-22 + */ +public class SM2UtilsTest { + + public static void main(String[] args) { + + String s = "Hello word! 你好,中文!"; + System.out.println(s); + + String[] keys = SM2Utils.genKeys(); + System.out.println("公钥:" + keys[0]); + PublicKey publicKey = SM2Utils.toPublicKey(keys[0]); + System.out.println("私钥:" + keys[1]); + PrivateKey privateKey = SM2Utils.toPrivateKey(keys[1]); + + byte[] data = SM2Utils.encode(s.getBytes(), publicKey); + String dataString = EncodeUtils.encodeBase64(data); + System.out.println("加密数据:" + dataString); + + byte[] data2 = SM2Utils.decode(data, privateKey); + String dataString2 = new String(data2, StandardCharsets.UTF_8); + System.out.println("解密数据:" + dataString2); + + byte[] sign = SM2Utils.sign(s.getBytes(), privateKey); + System.out.println("数据签名:" + EncodeUtils.encodeBase64(sign)); + + boolean b = SM2Utils.verify(s.getBytes(), publicKey, sign); + System.out.println("数据验签:" + b); + } + +} \ No newline at end of file diff --git a/modules/core/src/test/java/com/jeesite/test/codec/SM3UtilsTest.java b/modules/core/src/test/java/com/jeesite/test/codec/SM3UtilsTest.java new file mode 100644 index 00000000..dc426c65 --- /dev/null +++ b/modules/core/src/test/java/com/jeesite/test/codec/SM3UtilsTest.java @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.test.codec; + +import com.jeesite.common.codec.SM3Utils; + +/** + * 国密 SM3 加密工具类,散列加密,不可逆加密 + * @author ThinkGem + * @version 2024-07-22 + */ +public class SM3UtilsTest { + + public static void main(String[] args) { + + String s = "Hello word! 你好,中文!"; + System.out.println(s); + + String s1 = SM3Utils.sm3(s); + System.out.println(s1); + + String key = SM3Utils.genSaltString(8); + System.out.println(key); + + String s3 = SM3Utils.sm3(s, key); + System.out.println(s3); + + String s4 = SM3Utils.hmacSm3(s, key); + System.out.println(s4); + } + +} \ No newline at end of file diff --git a/modules/core/src/test/java/com/jeesite/test/codec/SM4UtilsTest.java b/modules/core/src/test/java/com/jeesite/test/codec/SM4UtilsTest.java new file mode 100644 index 00000000..44dfb9d3 --- /dev/null +++ b/modules/core/src/test/java/com/jeesite/test/codec/SM4UtilsTest.java @@ -0,0 +1,39 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.test.codec; + +import com.jeesite.common.codec.EncodeUtils; +import com.jeesite.common.codec.SM4Utils; + +import java.nio.charset.StandardCharsets; + +/** + * 国密 SM4 加密解密工具类,对称加密 + * @author ThinkGem + * @version 2024-07-22 + */ +public class SM4UtilsTest { + + public static void main(String[] args) { + + String s = "Hello word! 你好,中文!"; + System.out.println(s); + + String k = SM4Utils.genKeyString(); + System.out.println(k); + String s1 = SM4Utils.encode(s, k); + System.out.println(s1); + String s2 = SM4Utils.decode(s1, k); + System.out.println(s2); + + byte[] key = SM4Utils.genKey(); + byte[] iv = SM4Utils.genIV(); + byte[] data = SM4Utils.encode(s.getBytes(StandardCharsets.UTF_8), key, iv); + System.out.println(EncodeUtils.encodeBase64(data)); + byte[] data2 = SM4Utils.decode(data, key, iv); + System.out.println(new String(data2, StandardCharsets.UTF_8)); + } + +} \ No newline at end of file