diff --git a/README.md b/README.md
index 4f83c959965da0af0e1967276f6155202e660933..f69db9bcf44c47aff9c9c6e6712c39a0ecf70a86 100644
--- a/README.md
+++ b/README.md
@@ -1,116 +1,126 @@
-# 国密算法-Java版
-测试地址:[http://gm.openjava.cn/doc.html](http://gm.openjava.cn/doc.html)
-#### 介绍
+国密算法-Java版
+---
+
+### 介绍
+
+本项目是一个基于 Java 的国密算法实现,包含 SM2、SM3 和 SM4 等国密标准算法的封装,支持加密、解密、签名、验证等常用安全功能。适用于需要国密算法支持的安全通信、数据加密、身份验证等场景。
+
+主要功能包括:
+- **SM2**:国密椭圆曲线公钥密码算法,支持密钥生成、加密、解密、签名、验证。
+- **SM3**:国密哈希算法,用于生成数据的摘要。
+- **SM4**:国密对称加密算法,支持 CBC 和 ECB 模式。
+- 工具类支持:包括数据转换(Hex、ASCII、二进制等)、数据加密配置工具、数据库加密工具等。
+
+---
+
+### 使用说明
+
+#### 1. 安装与依赖
-国密算法是我国自主研发的密码算法体系,用于保护我国信息安全。它包括对称密码算法、非对称密码算法和杂凑算法,如SM1、SM2、SM3、SM4、SM7、SM9和祖冲之密码算法等。
-本软件主要提供了SM2、SM3、SM4三种算法。
+确保你使用的是支持 Java 的开发环境。项目基于 Maven 构建,你需要在你的 `pom.xml` 文件中添加相关依赖(如果项目未提供自动依赖管理)。
-SM2是一种非对称加密算法,基于离散对数实现,常用于数字签名和密钥交换;SM3是一种杂凑算法,用于数据完整性校验和消息认证码,该算法为不可逆的算法;SM4是一种分组密码算法,可用于替代DES/AES等国际密码算法,拥有和AES算法相同的密钥长度和分组长度,均为128比特。
+#### 2. 核心功能使用示例
-除这三种算法的基本实现外,还提供了针对传输加解密、存储加解密、配置文件加解密三种应用场景的算法实现。
+##### SM2 加解密和签名验证
-**传输加解密**:采用SM2+SM3+SM4(CBC)的组合。SM2加密SM4的密钥和向量值;SM4加密要传输的数据;SM3保证数据传输的完整性。整个过程中,SM4的密钥和向量值每次都会发生变化,即实现了“一次一密”。
+```java
+// 生成 SM2 密钥对
+SM2KeyPair keyPair = SM2.generateSm2Keys(false);
-**存储加解密**:采用SM3+SM4(CBC)的组合。SM3保证数据的完整性;SM4对数据进行加解密。
+// 使用公钥加密
+String cipherText = SM2.encrypt("Hello Gitee", keyPair.getPublicKey());
-**配置文件加解密**:与**存储加解密**类似。
+// 使用私钥解密
+String plainText = SM2.decrypt(cipherText, keyPair.getPrivateKey());
-#### 使用说明
+// 签名
+String signature = SM2.sign("Hello Gitee", keyPair.getPrivateKey());
-本软件对应的jar包已经发布到maven中央仓库,只需要在pom.xml中引入即可:
+// 验证签名
+boolean isValid = SM2.verify("Hello Gitee", keyPair.getPublicKey(), signature);
+```
-
-
- cn.openjava
- gmsm
- 2.0.5
-
+##### SM3 摘要生成
-在cn.openjava.gmsm.test中提供了测试方法:Test.java,运行后可看到各种算法运算后的值。
+```java
+// 生成字符串的 SM3 摘要
+String digest = SM3.getDigest("Hello Gitee");
+System.out.println("SM3 Digest: " + digest);
+```
- SM3摘要:C4B26BA9FB01E8A03884C6CEB3A6CAAE4B78EF8391BB8977E342662A32B04275
- SM4-生成密钥:CA4AE6E12B72947BD53C71DCB9A8AF07
- SM4-ECB加密:6C090B06707137C725AB3321A5FE6B22
- SM4-ECB解密:你好,世界
- SM4-生成iv:AA26EA6E61053EF7D5858D67F62DA66D
- SM4-CBC加密:86833295EEC0EA65B451D071D1035AAE
- SM4-CBC解密:你好,世界
- SM2-公钥:046042E11E5AE6AEB8A02EE23F36023B99F3048176CA97B3E6416DEC543C402D2E2FB739C6BAAE8E8D4EC66496072E092D1A6DC42375C00337AF6AA871BDF72A90
- SM2-私钥:C42B72B3054D98387D2C1360924C54178C2F379971633F5942746AA7F9EFADB8
- SM2-密文:049F955BD2CC44C1450D845DD5720A8096B42D61AA20E378FF41739C4A226E7E81CACE7FD443C5C3F2AD7C18DA9BA3A65DA8BAA8D5F30E19FB92422939EACDA23ED9F3B643E2225BBAA008B93D14C43B82BDF1314B28EB56B1C08B5FB67A1F0DC6469C0304B6857B93C4C7D766372C38
- SM2-明文:你好,世界
- 传输加密:D8E2853ABE1338E10AF080CEA93631A1603BAFFA87C7AE9F7F615F67EB8619B2E82182B388C0827BC8DAFE684FFC03F8C191D549F5565D83B4A661080FA87EC7D0A489DE2F06B6620E786D97389A3339B2A4CFACBDD4F77976BCD46783841D9D83706E1D0B1EAC48B936658D2BC2CA79G04C6A40D212E467CA0831111E7754BA1C5E2CC16C31DED0BBB4969E96B7A203D34EF10327BA981B5F6FBA295DC1A5C65E8FF785D8DBF121248A34071E25F881939C9AD64BECA8EDDD2AD38FC62189D07148BFD5F4B6D07596C7D0887750D819844A0B5FBDC0AD6728210DA6CB550C777ABE8E41CF19A0781EB2454442C94B64B5A
- 传输解密:你好,世界
- 传输解密-对象:你好,世界
- 配置文件加密:09CE1E6685A00B3556A4A49862F9EA9BA98EBBF58EAB0A8364351EACC59751AE5FB877105807AF6C38B7574A02B2341AA775B65781B04671393E495043E925C6A7D29F4BE5E64B48AFBBBBAF0023576EF5809444749A92E8BB4F8A95CB288F4B
- 配置文件解密:你好,世界
- 数据库加密:931A4033B0ABB103C741D397D02B5367551C2A444E630FDFF63FD0E8C37A388E53EDC25FACFDC272D8A3642A1B6C57A9886DA072D70D87E4072FC00606B73DA41F969DBF7437A2FFB2ED87CAD4D306685F36EC5D554A15E2A90F61E34F41B836
- 数据库解密:2
-
-1.SM3
+##### SM4 加解密(ECB / CBC 模式)
- SM3.getDigest(data)
-2.SM4生成密钥和向量值
+```java
+// 生成 SM4 密钥
+String key = SM4.generateKey();
- String key = SM4.generateKey();
-3.SM4(ECB算法)加密:
-
- SM4.encrypt(data, key);
-4.SM4(CBC算法)加密:
+// ECB 模式加密与解密
+String cipherTextECB = SM4.encrypt("Hello Gitee", key);
+String plainTextECB = SM4.decrypt(cipherTextECB, key);
- SM4.encrypt(data, key, iv);
-5.SM4(ECB算法)解密:
+// CBC 模式加密与解密
+String iv = "1234567890abcdef"; // 初始化向量
+String cipherTextCBC = SM4.encrypt("Hello Gitee", key, iv);
+String plainTextCBC = SM4.decrypt(cipherTextCBC, key, iv);
+```
- SM4.decrypt(data, key);
-6.SM4(CBC算法)接i密:
+##### 数据转换工具
- SM4.decrypt(data, key, iv);
-7.SM2生成公钥和私钥:
+```java
+// 将 Hex 字符串转为字节数组
+byte[] bytes = ConvertUtil.hexStringToBytes("00aabbccddeeff");
- SM2KeyPair sm2Keys = SM2.generateSm2Keys(false);
- String publicKey = sm2Keys.getPublicKey();
- System.out.println("SM2-公钥:" + publicKey);
- String privateKey = sm2Keys.getPrivateKey();
- System.out.println("SM2-私钥:" + privateKey);
-8.SM2加密和解密:
+// 将字节数组转为 Hex 字符串
+String hex = ConvertUtil.getHexString(bytes);
+```
- String encrypt = SM2.encrypt(data, publicKey);
- System.out.println("SM2-密文:" + encrypt);
- String data2 = SM2.decrypt(encrypt, privateKey);
- System.out.println("SM2-明文:" + data2);
-9.传输加密和解密:
+##### 配置文件加解密工具
- String encrypt1 = GmTransmissionUtil.encrypt(data, sm2PubKey);
- System.out.println("传输加密:" + encrypt1);
- CipherObj decrypt1 = GmTransmissionUtil.decrypt(encrypt1, sm2PriKey);
- System.out.println("传输解密:" + decrypt1.getCipherText());
- System.out.println("传输解密-对象:" + GmTransmissionUtil.decrypt(encrypt1, sm2PriKey, String.class));
-注意:**不要用此软件默认的sm2的公钥和私钥,不安全!!!** 请自行生成公钥和私钥。
+```java
+// 使用默认的 SM4 密钥和 IV 加密配置项
+String encrypted = GmConfigurationUtil.encrypt("Hello Gitee");
-_传输加解密需要和前台配合使用。前端加解密请访问[https://gitee.com/cn-openjava/gmsm-js](https://gitee.com/cn-openjava/gmsm-js),二者可相互实现加解密。_
+// 解密配置项
+String decrypted = GmConfigurationUtil.decrypt(encrypted);
+```
-10.数据库加解密:
+##### 数据库加解密工具
- String encrypt3 = GmDBUtil.encrypt(2, sm4Key, ivKey);
- System.out.println("数据库加密:" + encrypt3);
- Integer decrypt2 = GmDBUtil.decrypt(encrypt3, sm4Key, ivKey, Integer.class);
- System.out.println("数据库解密:" + decrypt2);
-注意:**不要用此软件默认的sm4的密钥和向量值,不安全!!!** 请自行生成密钥和向量值。
+```java
+// 加密对象并返回字符串
+String encryptedData = GmDBUtil.encrypt("Hello Gitee");
-11.配置文件加解密:
+// 解密字符串并还原为对象
+String decryptedData = GmDBUtil.decrypt(encryptedData, String.class);
+```
- String encrypt2 = GmConfigurationUtil.encrypt(data, sm4Key, ivKey);
- System.out.println("配置文件加密:" + encrypt2);
- System.out.println("配置文件解密:" + GmConfigurationUtil.decrypt(encrypt2, sm4Key, ivKey));
-注意:**不要用此软件默认的sm4的密钥和向量值,不安全!!!** 请自行生成密钥和向量值。
+##### 传输加解密工具
+
+```java
+// 使用默认 SM2 公钥加密数据
+String cipherText = GmTransmissionUtil.encrypt("Hello Gitee");
+
+// 使用 SM2 私钥解密数据
+CipherObj cipherObj = GmTransmissionUtil.decrypt(cipherText, "your_sm2_private_key");
+String plainText = cipherObj.getCipherText();
+```
---
-_**如果软件好用,请您帮忙点个小星星🌟吧**。❤️❤️❤️_
+
+#### 3. 注意事项
+
+- **密钥管理**:本项目中部分密钥为静态常量,建议在实际生产环境中动态管理并加密存储。
+- **异常处理**:加密和解密操作可能会抛出 `SmCryptoException`,请务必使用 try-catch 捕获处理。
+- **测试类**:`Test.java` 提供了完整的使用示例,可以作为参考。
---
-欢迎打赏哦,您的支持是我们前行的最大动力。
-
+#### 4. 许可证
+
+本项目遵循开源协议(具体以 `LICENSE` 文件为准),欢迎自由使用、修改和分发。请在使用过程中保留原始版权信息。
+
+---
+如需更多帮助,请参考源码或提交 issue。欢迎参与项目贡献!
\ No newline at end of file