Java 快速入门
Java 快速入门
主包提供 core、SM2、SM3、SM4、ZUC 和 SM2 + SM4 混合加密,最低支持 Java 8。先用最小测试确认制品、Provider、安全随机源和 SM3 结果,再进入任务手册。
1. 安装主包
<dependency>
<groupId>cn.gmkit</groupId>
<artifactId>gmkit</artifactId>
<version>0.10.1</version>
</dependency>如果项目使用 Gradle,请仍以 Maven Central 的 cn.gmkit:gmkit:0.10.1 为坐标;不要依赖仓库内部模块路径。
2. 运行最小验证
下面的 JUnit 5 源码会检查 Provider、SecureRandom、SM2 密钥生成和 SM3 abc 固定向量。
package cn.gmkit;
import cn.gmkit.core.BcProviders;
import cn.gmkit.core.GmSecurityContext;
import cn.gmkit.sm2.SM2;
import cn.gmkit.sm2.SM2KeyPair;
import cn.gmkit.sm3.SM3Util;
import org.junit.jupiter.api.Test;
import java.security.Provider;
import java.security.SecureRandom;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
class ManualJavaStartTest {
@Test
void verifiesProviderRandomAndFixedVector() {
// 1. 创建 Provider:实例直接传给算法,不修改 JVM 的全局 Provider 顺序。
Provider provider = BcProviders.create();
GmSecurityContext context = GmSecurityContext.builder()
.provider(provider)
.secureRandom(new SecureRandom())
.registerProvider(false)
.build();
assertFalse(context.registerProvider());
assertEquals("BC", context.provider().getName());
// 2. 生成 SM2 密钥:验证 Provider 和 SecureRandom 能完成随机密码操作。
SM2KeyPair keyPair = new SM2(context).generateKeyPair();
assertEquals(64, keyPair.privateKey().length());
assertEquals(130, keyPair.publicKey().length());
// 3. 计算 SM3 固定向量:SM3("abc") 必须得到标准 32 字节摘要。
assertEquals(
"66c7f0f462eeedd9d1f2d46bdc10e4e2"
+ "4167c4875cf2f7a2297da02b8f4ba8e0",
SM3Util.digestHex("abc"));
// 4. 随机源断言:安全上下文必须始终提供非空 SecureRandom。
assertNotNull(context.secureRandom());
}
}仓库内可直接运行:
mvn -f packages/java/pom.xml -B -ntp \
-pl gmkit -Dtest=ManualJavaStartTest test3. 接着完成业务任务
先固定环境编码、Provider 与异常明确 UTF-8、Hex/Base64、安全上下文和服务错误映射。身份与小数据标准 SM2 签名和加解密使用非空 userId、标准 Z、DER 签名和 C1C3C2 密文。业务数据SM4-GCM 认证加密配置 nonce、AAD 和 tag,并确认认证失败不返回明文。独立制品评估并接入 SM9先检查平台,再处理 KGC、身份私钥、PEM、IBE 和资源关闭。
需要精确重载和异常时查 Java API 说明书;维护旧数据时才进入旧系统迁移。
SM9 依赖按需添加
<dependency>
<groupId>cn.gmkit</groupId>
<artifactId>gmkit-sm9</artifactId>
<version>0.10.1</version>
</dependency>不使用 SM9 的服务不添加这个制品。使用时必须先验证目标平台,所有持有本地动态库(native)句柄的类型都用 try-with-resources 关闭。
上线边界
当前发布包尚未完成独立第三方安全审计。固定向量和示例测试不能替代 Provider 策略、密钥管理、协议评审、密码产品认证或目标环境安全评估。