深入了解SM4算法:中国商用密码的加密机制与gm-crypt库的应用
文章目录

一、SM4算法及加密库gm-crypt介绍(可忽略)
SM4 算法属于分组密码算法,它还有一个别称叫中国商用密码,是在 2006 年由中国国家密码管理局公开进行发布的。并且它是一种对称密码算法,也就是加密和解密所使用的密钥是相同的。
SM4 算法的结构类似于 AES。它具有自己独特的设计特点。其基本结构包含以下几个要素:
SM4 采用了与 DES 类似的 Feistel 网络结构,通过多轮迭代来达成加密和解密的操作。在 SM4 算法里,密钥会被扩展成多个轮密钥,这些轮密钥可供每轮迭代使用。
SM4 算法的安全性得到了广泛的评估与分析。该算法已被国际标准化组织 ISO/IEC 采纳为国际标准(ISO/IEC 18033-3:2010)。它在信息安全保护、加密通信以及数据传输等方面有着广泛的应用。
gm-crypt 是一个提供了对 SM4 算法实现的 js 库。它能够在前端环境中进行加密和解密操作。这个库允许开发者在客户端使用 JavaScript 来处理敏感数据,无需将数据传输到服务器端进行加密解密。在一些安全性要求较高的场景中,它非常有用。开发者借助简单易用的 API,能够轻松地把加密功能集成到自己的 Web 应用当中。
gm-crypt地址:
二、 实操流程 1.安装gm-crypto库
可以使用npm 或者yarn 来安装:
npm install gm-crypto
或者
yarn add gm-crypto
2.代码中引入并使用它来实现加密解密的功能。
import gmCrypt from 'gm-crypt'; // 导入 gm-crypt 库
const pwdKey = "后端给的密钥字符串"; //后端给的密钥
let gmCryptConfig = {
key: pwdKey, 这里的这个 key 值需要与后端保持一致,后端是依据这个 key 进行解密的。
mode: "ecb", 加密的方式有 ecb 和 cbc 两种,这取决于后端的定义。如果是 cbc 的话,下面还需要添加一个 iv 的参数;而 ecb 则不需要。
cipherType: "base64"
};
const sm4Util = new gmCrypt.sm4(gmCryptConfig); 创建一个 sm4 函数,把上面的 gmCryptConfig 当作参数传递进去。
// 定义sm4加密方法
context.pageContextRegistry.register('encryptText', (text: string) => {
// 使用 gm-crypt 库对文本进行加密
const encryptedText = sm4Util.encrypt(text);
return encryptedText;
});
// 定义解密方法
context.pageContextRegistry.register('decryptText', (text: string) => {
// 使用 gm-crypt 库对文本进行解密
const decryptedText = sm4Util.decrypt(text);
return decryptedText;
});
ps:关于ecb和cbc两种加密方式的比较(可忽略)。
3.验证
至此已实现SM4加密。
« 上一篇
python之父教程(python之父的书)
下一篇 »
深入解析C语言中Static关键字的作用与用法