# algorithmNation
**Repository Path**: f2183435103/algorithmNation
## Basic Information
- **Project Name**: algorithmNation
- **Description**: 🍬国密算法 SM2加解密 SM2 SM3 SM4签名验签 National secret algorithm SM2 encryption and decryption SM2 SM3 SM4 signature verification
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://www.ydxiaoshuai.cn
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 67
- **Created**: 2026-03-30
- **Last Updated**: 2026-03-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
[](https://www.xsshome.cn/)
[](http://www.apache.org/licenses/LICENSE-2.0.html)
[]()
[](https://www.xsshome.cn/)
SM2生成证书请移步:[https://blog.csdn.net/u010651369/article/details/76907312](https://blog.csdn.net/u010651369/article/details/76907312)
sm2root.cer是一个国密证书测试文件。可以自行下载查看相关证书内容哦
QQ:783021975
### 关注码小帅获取最新功能更新

SM2证书生成相关文档&博文地址(有完全免费开源的代码):[http://gm4j.mydoc.io/](http://gm4j.mydoc.io/)
新加1.SMCertUtil 生成国密证书工具类 2. XSCertExtension 拓展信息工具类
目录结构
```
cn.xsshome.algorithmNation
├── sample //测试代码
└── Test //SM2 加解密示例代码
└── TestSign //SM2 签名验签示例代码
└── TestCert //SM2 证书生成调用示例代码
└── TestSM4 //SM4 加解密示例代码
└── TestRSA //RSA 加解密、签名验签示例代码
├── vo //相关 Java 对象
└── util //工具类包含了 SM2 SM3 RSA 等一系列工具类
└── SM2EnDecryption //SM2 加解密工具类
└── SM2VerifySign //SM2 签名验签工具类
└── SM3 //SM3 摘要算法工具类
└── SM4EnDecryption //SM4 加解密工具类
└── RSAEnDecryption //RSA 加解密工具类
└── RSASignVerify //RSA 签名验签工具类
```
所需依赖包
```
org.bouncycastle
bcpkix-jdk15on
1.57
org.bouncycastle
bcmail-jdk15on
1.56
com.xiaoleilu
hutool-all
3.0.9
```
## 功能特性
### RSA 算法支持
- ✅ RSA 加密/解密(支持分段加密,突破数据长度限制)
- ✅ RSA 签名/验签(使用 SHA256withRSA 算法)
- ✅ 支持多种密钥长度(1024、2048、4096 等)
- ✅ 提供公钥/私钥的字节数组与对象转换方法
### 使用示例
```java
// RSA 加解密
KeyPair keyPair = RSAEnDecryption.getKeyPair(2048);
byte[] encrypted = RSAEnDecryption.encrypt(keyPair.getPublic().getEncoded(), data);
byte[] decrypted = RSAEnDecryption.decrypt(keyPair.getPrivate().getEncoded(), encrypted);
// RSA 签名验签
KeyPair keyPair = RSASignVerify.getKeyPair(2048);
byte[] signature = RSASignVerify.sign(keyPair.getPrivate().getEncoded(), data);
boolean verified = RSASignVerify.verify(keyPair.getPublic().getEncoded(), data, signature);
```
### SM2 算法支持
- ✅ SM2 加密/解密
- ✅ SM2 签名/验签
- ✅ SM2 证书生成
### SM3 算法支持
- ✅ SM3 摘要算法
### SM4 算法支持
- ✅ SM4 加密/解密