2 Star 2 Fork 3

janusdo / loong-crypto

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Loong-Crypto - 简化密码服务开发

项目介绍

Loong-Crypto 支持多种国际算法密码运算,支持SM2,SM3,SM4商用密码算法,简化密码服务开发。

支持的算法

  • KeyAlgorithm

    • AES
    • Blowfish
    • DES
    • DESede
    • HmacMD5
    • HmacSHA1
    • HmacSHA224
    • HmacSHA256
    • HmacSHA384
    • HmacSHA512
    • RC2
    • RC4
    • HmacSM3
    • SM4
  • KeyPairAlgorithm

    • DSA
    • RSA
    • EC
    • SM2
  • MessageDigestAlgorithm

    • MD2
    • MD4
    • MD5
    • SHA-1
    • SHA-224
    • SHA-256
    • SHA-384
    • SHA-512
    • SM3
  • HmacAlgorithm

    • HmacMD5
    • HmacSHA1
    • HmacSHA224
    • HmacSHA256
    • HmacSHA384
    • HmacSHA512
    • HmacSM3
  • Cipher (Encryption) algorithm

    • AES
    • AESWrap
    • ARCFOUR
    • Blowfish
    • CCM
    • DES
    • DESede
    • DESedeWrap
    • ECIES
    • GCM
    • RC2
    • RC4
    • RC5
    • RSA
    • SM2
    • SM4
  • EncryptionMethod

    • AES/ECB/NoPadding
    • AES/CBC/NoPadding
    • AES/CFB/NoPadding
    • AES/OFB/NoPadding
    • AES/ECB/PKCS5Padding
    • AES/CBC/PKCS5Padding
    • RC2/CBC/PKCS5Padding
    • RC4/ECB/PKCS5Padding
    • DES/ECB/PKCS5Padding
    • DES/CBC/PKCS5Padding
    • DESede/ECB/NoPadding
    • DESede/ECB/PKCS5Padding
    • DESede/ECB/PKCS7Padding
    • DESede/CBC/NoPadding
    • DESede/CBC/PKCS5Padding
    • DESede/CBC/PKCS7Padding
    • ECIES
    • ECIESwithSHA1
    • ECIESwithSHA256
    • ECIESwithSHA384
    • ECIESwithSHA512
    • ECIESwithDESede-CBC
    • ECIESwithSHA1andDESede-CBC
    • ECIESwithSHA256andDESede-CBC
    • ECIESwithSHA384andDESede-CBC
    • ECIESwithSHA512andDESede-CBC
    • ECIESwithAES-CBC
    • ECIESwithSHA1andAES-CBC
    • ECIESwithSHA256andAES-CBC
    • ECIESwithSHA384andAES-CBC
    • ECIESwithSHA512andAES-CBC
    • RSA/None/NoPadding
    • RSA/ECB/NoPadding
    • RSA/ECB/PKCS1Padding
    • SM2
    • SM4/ECB/NoPadding
    • SM4/ECB/PKCS5Padding
    • SM4/CBC/NoPadding
    • SM4/CBC/PKCS5Padding
  • SignatureAlgorithm

    • SHA1WithDSA
    • SHA224WithDSA
    • SHA256WithDSA
    • SHA384WithDSA
    • SHA512WithDSA
    • SHA1WithECDSA
    • SHA224WithECDSA
    • SHA256WithECDSA
    • SHA384WithECDSA
    • SHA512WithECDSA
    • MD2WithRSA
    • MD5WithRSA
    • SHA1WithRSA
    • SHA224WithRSA
    • SHA256WithRSA
    • SHA384WithRSA
    • SHA512WithRSA
    • SHA1WithRSASSA-PSS
    • SHA224WithRSASSA-PSS
    • SHA256WithRSASSA-PSS
    • SHA384WithRSASSA-PSS
    • SHA512WithRSASSA-PSS
    • SHA1WithSM2
    • SHA256WithSM2
    • SM3WithSM2

扩展功能

支持RSA密码算法,SM2密码算法加密签名消息

  • RFC中各类型标识符定义如下:
对象标识符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
  • GM/T 0010 - 2012 规范中各类型标识符定义如下:
对象标识符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依赖

直接添加以下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);

空文件

简介

Loong-Crypto 支持多种国际算法密码运算,支持SM2,SM3,SM4商用密码算法,简化密码服务开发。 展开 收起
取消

发行版 (1)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/janusdo/loong-crypto.git
git@gitee.com:janusdo/loong-crypto.git
janusdo
loong-crypto
loong-crypto
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891