代码拉取完成,页面将自动刷新
Loong-Crypto 支持多种国际算法密码运算,支持SM2,SM3,SM4商用密码算法,简化密码服务开发。
KeyAlgorithm
KeyPairAlgorithm
MessageDigestAlgorithm
HmacAlgorithm
Cipher (Encryption) algorithm
EncryptionMethod
SignatureAlgorithm
支持RSA密码算法,SM2密码算法加密签名消息
对象标识符OID | 对象标识符定义 |
---|---|
1.2.840.113549.1.7.1 | 数据类型data |
1.2.840.113549.1.7.2 | 签名数据类型signedData |
1.2.840.113549.1.7.3 | 数字信封数据类型envelopedData |
1.2.840.113549.1.7.4 | 签名及数字信封数据类型signedAndEnvelopedData |
1.2.840.113549.1.7.5 | 摘要数据类型digestData |
1.2.840.113549.1.7.6 | 加密数据类型encryptedData |
对象标识符OID | 对象标识符定义 |
---|---|
1.2.156.10197.6.1.4.2 | SM2密码算法加密签名消息语法规范 |
1.2.156.10197.6.1.4.2.1 | 数据类型data |
1.2.156.10197.6.1.4.2.2 | 签名数据类型signedData |
1.2.156.10197.6.1.4.2.3 | 数字信封数据类型envelopedData |
1.2.156.10197.6.1.4.2.4 | 签名及数据信封数据类型signedAndEnvelopedData |
1.2.156.10197.6.1.4.2.5 | 加密数据类型encrypedData |
1.2.156.10197.6.1.4.2.6 | 密钥协商类型keyAgreementInfo |
以下例子基于Spring Boot
直接添加以下maven依赖即可
<dependency>
<groupId>org.loong</groupId>
<artifactId>loong-crypto-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
// 注入接口实例
@Autowired
private CryptoService cryptoService;
...
// 测试数据
private byte[] data = "Hello Word!".getBytes();
// 创建对称密钥
SecretKey secretKey = cryptoService.generateKey(KeyAlgorithm.SM4, KeyGeneratorParameters.builder().keySize(128).build());
// 创建非对称密钥
KeyPair keyPair = cryptoService.generateKeyPair(KeyPairAlgorithm.SM2, KeyPairGeneratorParameters.builder().keySize(256).build());
// 摘要计算
byte[] digest = cryptoService.digest(MessageDigestAlgorithm.SM3, data);
// HMac计算
byte[] hmac = cryptoService.hmac(HmacAlgorithm.HMAC_SM3, HmacParameters.builder().secret(secretKey.getEncoded()).build(), data);
// HMac验证
boolean hmacValid = cryptoService.verifyHmac(HmacAlgorithm.HMAC_SM3, HmacParameters.builder().secret(secretKey.getEncoded()).build(), data, hmac);
// 数据加密
CipherParameters encryptParams = CipherParameters.builder().key(keyPair.getPublic()).build();
byte[] cipherText = cryptoService.encrypt(CipherAlgorithm.SM2, encryptParams, data);
// 数据解密
CipherParameters decryptParams = CipherParameters.builder().key(keyPair.getPrivate()).build();
byte[] plainText = cryptoService.decrypt(CipherAlgorithm.SM2, decryptParams, cipherText);
// 数据签名
SignatureParameters signatureParams = SignatureParameters.builder().key(keyPair.getPrivate()).build();
byte[] signature = cryptoService.sign(SignatureAlgorithm.SM3_SM2, signatureParams, data);
// 签名验证
SignatureParameters verifyParams = SignatureParameters.builder().key(keyPair.getPublic()).build();
boolean signatureValid = cryptoService.verify(SignatureAlgorithm.SM3_SM2, verifyParams, data, signature);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。