微信小程序中使用miniprogram-sm-crypto实现SM4加密攻略

在微信小程序开发过程中,数据安全至关重要。本文将为大家介绍如何在微信小程序中使用miniprogram-sm-crypto插件进行SM4加密,确保数据传输的安全性。

一、SM4加密简介

SM4是一种对称加密算法,由国家密码管理局发布,适用于商密领域。它的密钥长度为128位,分组长度为128位,加密过程采用32轮迭代。SM4加密算法具有较高的安全性,适用于微信小程序中的数据加密需求。

二、准备工作

1、创建微信小程序项目 

首先,确保您已安装微信开发者工具,并创建一个新的微信小程序项目。

2、安装miniprogram-sm-crypto插件 

在项目根目录下,打开命令行工具,执行以下命令安装miniprogram-sm-crypto插件:

npm install miniprogram-sm-crypto

3、 npm构建(重要!!)

一定要构建npm,不然无法引入使用

三、使用miniprogram-sm-crypto进行SM4加密

1、在你需要加密的页面引入

const sm4 = require("miniprogram-sm-crypto").sm4;

2、定义你的密钥 

const key = '00112233445566778888888800000000'  // 替换为你的密钥

3、加密你的信息

const msg = '我要加密' // 可以为 utf8 串或字节数组
let encryptData = sm4.encrypt(msg, key) // 加密,默认输出 16 进制字符串,默认使用 pkcs#7 填充(传 pkcs#5 也会走 pkcs#7 >填充)

4、解密信息

let decryptData = sm4.decrypt(encryptData, key);

四、完整示例代码

const sm4 = require("miniprogram-sm-crypto").sm4;
const msg = '我要加密' // 可以为 utf8 串或字节数组
const key = '00112233445566778888888800000000' // 可以为 16 进制串或字节数组,要求为 128 比特let encryptData = sm4.encrypt(msg, key) // 加密,默认输出 16 进制字符串,默认使用 pkcs#7 填充(传 pkcs#5 也会走 pkcs#7 >填充)console.log(encryptData);let decryptData = sm4.decrypt(encryptData, key);
console.log(decryptData);

总结:

通过本文的介绍,相信大家已经掌握了在微信小程序中使用miniprogram-sm-crypto插件进行SM4加密的方法。在实际项目中,请根据需求合理使用加密技术,确保数据传输的安全性。如有疑问,欢迎在评论区留言交流。

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/486936.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文阅读】相似误差订正方法在风电短期风速预报中的应用研究

文章目录 概述:摘要1. 引言2. 相似误差订正算法(核心)3. 订正实验3.1 相似因子选取3.2 相似样本数试验3.3 时间窗时长实验 4. 订正结果分析4.1 评估指标对比4.2 风速曲线对比4.3 分风速段订正效果评估4.4 风速频率统计 5. 结论与讨论 概述&am…

高中数学:计数原理-二项式定理

文章目录 一、二项式定理与通项公式二、二项式系数的性质 一、二项式定理与通项公式 我们先来看完全平方公式 二、二项式系数的性质

javaweb-Mybaits

1.Mybaits入门 (1)介绍 (2) 2.Mybaits VS JDBC 3.数据库连接池 (1)SpringBoot默认连接池为hikari,切换为Druid有两种方式 方式一:加依赖 方式二:直接修改配置文件 …

节点流和处理流

1. 基本介绍 节点流可以从一个特定的数据源读写数据,如FileReader、FileWriter 处理流(也叫包装流)是“连接”在已存在的流(节点流或处理流)之上,为程序提供更为强大的读写功能,也更加灵活,如BufferedReader、BufferedWriter 2. …

21个Python脚本自动执行日常任务(2)

引言 作为编程领域摸爬滚打超过十年的老手,我深刻体会到,自动化那些重复性工作能大大节省我们的时间和精力。 Python以其简洁的语法和功能强大的库支持,成为了编写自动化脚本的首选语言。无论你是专业的程序员,还是希望简化日常工…

数据结构--树和二叉树

树和二叉树的定义 树的定义 树是一种非线性的数据结构,它模拟了具有层次关系的数据的集合。在树结构中,存在以下基本概念: 节点(Node):树的每个元素被称为节点。根节点(Root Node&#xff09…

RabbitMQ七种工作模式之 RPC通信模式, 发布确认模式

文章目录 六. RPC(RPC通信模式)客户端服务端 七. Publisher Confirms(发布确认模式)1. Publishing Messages Individually(单独确认)2. Publishing Messages in Batches(批量确认)3. Handling Publisher Confirms Asynchronously(异步确认) 六. RPC(RPC通信模式) 客⼾端发送消息…

推送(push)项目到gitlab

文章目录 1、git init1.1、在当前目录中显示隐藏文件:1.2、查看已有的远程仓库1.3、确保你的本地机器已经生成了 SSH 密钥:1.4、将生成的公钥文件(通常位于 ~/.ssh/id_rsa.pub)复制到 GitLab 的 SSH 设置中:1.5、测试 …

前端-使用vue-cli脚手架创建项目

1.下载node:2.下载完检查是否安装成功 在cmd中输入:node --version或node -v 再在cmd中输入: npm -v npm默认的仓库地址是在国外,速度慢,所以设置淘宝镜像,速度就提升了,不设淘宝镜像也可以。 3.设置…

win11 安装低版本vmware导致频繁蓝屏原因及解决方法

环境 win11 vmware 16 安装完后,配置完虚拟机win10 ,开始频繁出现蓝屏,蓝屏界面如下 解决方案: 低版本vmware与win11不兼容,安装最新的vmware 17.5 使用ddu卸载集成显卡驱动,重新安装最新的显卡驱动&#xff0c…

算法日记 45 day 图论(并查集基础)

并查集解决什么问题 并查集常用来解决连通性问题。 大白话就是当我们需要判断两个元素是否在同一个集合里的时候,我们就要想到用并查集。 原理 既然是查找是否在同一个集合中,那么这个集合是怎么构建的呢?用一维数组来表示一个有向图&…

硬件选型规则

光源选型: 先用型号中带H的,没有的选标准的. 光源和光源控制器的搭配需要确保接口一致。 根据型号表中的最佳工作距离和相机的尺寸。 光源控制器选型: 首先选择海康风格系列光源控制器考虑与光源的接口匹配。功率应该满足接近光源功率。检查是否退市…

SSM虾米音乐项目3-后台流派模块的增删改

整体查询到的页面 <div class"widget-header"><i class"icon-list-ol"></i><h3>搜索条件</h3></div><div class"widget-content"><fieldset id"find"><div class"control-gr…

实验3-实时数据流处理-Flink

1.前期准备 &#xff08;1&#xff09;Flink基础环境安装 参考文章&#xff1a; 利用docker-compose来搭建flink集群-CSDN博客 显示为这样就成功了 &#xff08;2&#xff09;把docker&#xff0c;docker-compose&#xff0c;kafka集群安装配置好 参考文章&#xff1a; …

【Java】—— 图书管理系统

基于往期学习的类和对象、继承、多态、抽象类和接口来完成一个控制台版本的 “图书管理系统” 在控制台界面中实现用户与程序交互 任务目标&#xff1a; 1、系统中能够表示多本图书的信息 2、提供两种用户&#xff08;普通用户&#xff0c;管理员&#xff09; 3、普通用户…

Google BERT入门(3)Transformer的自注意力机制的理解(下)

文章目录 4.自注意力机制的理解步骤 4 4.自注意力机制的理解 步骤 4 我们计算了查询矩阵和键矩阵之间的点积&#xff0c;得到了分数&#xff0c;然后使用softmax函数对分数进行了归一化。现在&#xff0c;自注意力机制的最后一步是计算注意力矩阵Z。 注意力矩阵包含句子中每…

大舍传媒-关于海外媒体宣发的探讨

关于海外媒体宣发的探讨 一、海外媒体宣发的重要性 在当今全球化的时代&#xff0c;海外媒体宣发对于企业、组织和个人来说具有至关重要的意义。通过有效的海外媒体宣发&#xff0c;可以提升品牌知名度&#xff0c;拓展国际市场&#xff0c;增强影响力&#xff0c;吸引更多的潜…

城市基础设施数字化管理:打造安全、智能的城市生命线

随着数字化转型的深入&#xff0c;城市基础设施生命线的安全管理正面临前所未有的机遇与挑战。城市基础设施&#xff0c;包括交通、能源、供水、排水、通信等&#xff0c;是城市运行的“生命线”&#xff0c;其安全治理直接关系到城市的稳定与人民生活的安全。 数字化转型对城…

241207-通过Docker部署Wiki.JS并设置ElasticSearch进行中文搜索

A. 最终效果 B. 配置文件 version: "3" services:wiki:image: ghcr.io/requarks/wiki:2container_name: wikijsports:- "3000:3000"volumes:- /home/lgk/Projects/WikiJS/config:/configenvironment:- DB_TYPEpostgres- DB_HOSTdatabase- DB_PORT5432- DB…

ConcurrentLinkedQueue<>实现生产者-消费者问题理解和简易demo

1.ConcurrentLinkedQueue<> ConcurrentLinkedQueue 是 Java 中的一个线程安全的无界队列实现。它基于无锁&#xff08;lock-free&#xff09;的算法&#xff0c;采用了一个高效的、非阻塞的、可伸缩并发控制机制。这使得在高并发场景下能够实现较高的吞吐量。 无界性质…