微信小程序国密算法库 sm-crypto 项目推荐

微信小程序国密算法库 sm-crypto 项目推荐

sm-crypto miniprogram sm crypto library sm-crypto 项目地址: https://gitcode.com/gh_mirrors/smcry/sm-crypto

1. 项目基础介绍和主要编程语言

项目名称: sm-crypto
项目地址: https://github.com/wechat-miniprogram/sm-crypto
主要编程语言: JavaScript

sm-crypto 是一个专为微信小程序设计的国密算法库,支持国密算法 SM2、SM3 和 SM4 的实现。该项目依赖于微信小程序基础库 2.2.1 以上版本,并且需要开发者工具支持 npm 构建。

2. 项目的核心功能

sm-crypto 提供了以下核心功能:

  • SM2 加密解密: 支持生成密钥对、公钥压缩、加密解密、签名验签等功能。
  • SM3 杂凑: 支持 SM3 哈希算法,可用于生成消息摘要。
  • SM4 加密解密: 支持 SM4 对称加密算法,提供多种加密模式(如 ECB、CBC)和填充方式(如 PKCS#7)。

3. 项目最近更新的功能

根据项目的最新更新记录,sm-crypto 最近更新的功能包括:

  • SM2 公钥压缩: 新增了公钥压缩功能,可以将 130 位的公钥压缩到 66 位,减少存储空间。
  • SM2 自定义随机数: 支持自定义随机数生成,开发者可以传入自定义的随机数以满足特定需求。
  • SM2 签名优化: 新增了多种签名优化选项,如使用预先生成的椭圆曲线点、DER 编解码、SM3 杂凑等,以提高签名速度和安全性。
  • SM4 加密模式扩展: 新增了 CBC 模式的支持,提供更灵活的加密选项。

通过这些更新,sm-crypto 不仅提升了算法的性能和安全性,还增强了其在实际应用中的灵活性和适用性。

sm-crypto miniprogram sm crypto library sm-crypto 项目地址: https://gitcode.com/gh_mirrors/smcry/sm-crypto

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

### 关于 SM-Crypto 的使用说明 #### 一、简介 `sm-crypto` 是一个用于实现中码局制定的一系列标准(即算法)的库,支持多种编程语言环境下的应用开发。对于 JavaScript 和 Java 开发者来说,该库提供了方便易用的方法来执行 SM2, SM3 及 SM4 这三种主要类型的加操作[^1]。 #### 二、安装方式 针对不同平台有不同的引入途径: - **JavaScript 版本** 对于前端开发者而言,在 HTML 文件中可以通过 `<script>` 标签直接加载 CDN 上托管好的文件;也可以通过 npm 或 yarn 安装到 Node.js 工程里。 ```bash npm install sm-crypto --save ``` - **Java 版本** 如果是在 Maven 构建体系下,则可以在项目的 `pom.xml` 中加入依赖声明以自动下载所需 jar 包[^2]。 ```xml <dependency> <groupId>com.github.smcr</groupId> <artifactId>smcrypto-java-edition</artifactId> <version>LATEST_VERSION_HERE</version> </dependency> ``` #### 三、基本功能展示 ##### (一)SM2 非对称加示例 (JavaScript) ```javascript import { generateKeyPair } from 'sm-crypto'; // 创建一对新的公私钥组合 const keypair = await generateKeyPair(); console.log('Public Key:', keypair.public); console.log('Private Key:', keypair.private); // 使用私钥签名消息并验证其真实性 let message = "这是一个测试字符串"; let signature = await sign(message, keypair.private); // 签名过程 verify(signature, message, keypair.public).then(result => { console.assert(result === true, "签名验证失败"); }); ``` ##### (二)SM3 哈希函数计算实例 (Java) ```java import org.bouncycastle.jce.provider.BouncyCastleProvider; import java.security.MessageDigest; public class Sm3Example { static{ Security.addProvider(new BouncyCastleProvider()); } public static String getSm3Hash(String input){ try { MessageDigest digest = MessageDigest.getInstance("SM3", "BC"); byte[] hashBytes = digest.digest(input.getBytes()); StringBuilder hexString = new StringBuilder(); for (byte b : hashBytes) { String hex = Integer.toHexString(0xff & b); if(hex.length() == 1) hexString.append('0'); hexString.append(hex); } return hexString.toString(); } catch(Exception e){ throw new RuntimeException(e); } } } ``` ##### (三)SM4 对称加例子 (结合 Hutool 库) ```java import cn.hutool.crypto.symmetric.SM4; ... final SM4 sm4 = SecureUtil.sm4(key.getBytes()); // 加数据 String encryptHex = sm4.encryptHex(data); // 解回原文 String decryptStr = sm4.decryptStr(encryptHex); System.out.println(decryptStr.equals(data)); // 输出true表示成功还原原内容 ``` 以上代码片段展示了如何利用 `sm-crypto` 实现常见的加需求处理流程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瞿洁令Dennis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值