位置: IT常识 - 正文

前端国密加解密使用方法SM2、SM3、SM4(前端密码加密)

编辑:rootadmin
前端国密加解密使用方法SM2、SM3、SM4

推荐整理分享前端国密加解密使用方法SM2、SM3、SM4(前端密码加密),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:前端加密后端解密过程,前端 加密,密码前端加密后端解密,前端国密加解密怎么设置,前端数据加密解密,前端 加密,密码前端加密后端解密,前端数据加密解密,内容如对您有帮助,希望把文章链接给更多的朋友!

   国密算法,即国家商用密码算法。是由国家密码管理局认定和公布的密码算法标准及其应用规范,其中部分密码算法已经成为国际标准。如SM系列密码,SM代表商密,即商业密码,是指用于商业的、不涉及国家秘密的密码技术。

     不多废话直接上干货

 国密SM的安装方法

项目中 可能存在版本问题 用这个降级安装 (后面出现安装问题同理)

npm install --save sm-crypto 或 npm install --save sm-crypto --legacy-peer-deps 1、SM2是非对称加密算法

它是基于椭圆曲线密码的公钥密码算法标准,其秘钥长度256bit,包含数字签名、密钥交换和公钥加密,用于替换RSA/DH/ECDSA/ECDH等国际算法。可以满足电子认证服务系统等应用需求,由国家密码管理局于2010年12月17号发布。

SM2采用的是ECC 256位的一种,其安全强度比RSA 2048位高,且运算速度快于RSA。

    SM2引入使用方法 

const sm2 = require('sm-crypto').sm2const cipherMode = 1 // 1 - C1C3C2,0 - C1C2C3,默认为1 ****后端的话可以约定但后端默认加密方法好像是0 - C1C2C3****在解密时 使用的密钥和密位一般是传输过来的,密文传输得来的话开头会由04 需要删除,同时密钥可能存在必须小写的情况 key.slice(2).toLocaleLowerCase() 可以使用这个方法let encryptData = sm2.doEncrypt(msgString, publicKey, cipherMode) // 加密结果let decryptData = sm2.doDecrypt(encryptData, privateKey, cipherMode) // 解密结果下面的一般特殊情况才会用到encryptData = sm2.doEncrypt(msgArray, publicKey, cipherMode) // 加密结果,输入数组decryptData = sm2.doDecrypt(encryptData, privateKey, cipherMode, {output: 'array'}) // 解密结果,输出数组2、SM3是一种密码杂凑算法(用于数据摘要保证完整性)前端国密加解密使用方法SM2、SM3、SM4(前端密码加密)

  用于替代MD5/SHA-1/SHA-2等国际算法,适用于数字签名和验证、消息认证码的生成与验证以及随机数的生成,可以满足电子认证服务系统等应用需求,于2010年12月17日发布。

它是在SHA-256基础上改进实现的一种算法,采用Merkle-Damgard结构,消息分组长度为512bit,输出的摘要值长度为256bit。

引入使用方法    const sm3 = require('sm-crypto').sm3    this.loginForm = sm3(this.loginForm) //获得摘要后的数据3、SM4是分组加密算法(对称性的加密方法)

  跟SM1类似,是我国自主设计的分组对称密码算法,用于替代DES/AES等国际算法。SM4算法与AES算法具有相同的密钥长度、分组长度,都是128bit。于2012年3月21日发布,适用于密码应用中使用分组密码的需求。加密

const sm4 = require('sm-crypto').sm4const msg = '你好,我是空空.' // 可以为 utf8 串或字节数组const key = 'facca330123456789abcdas3210' // 可以为 16 进制串或字节数组,要求为 128 比特前后端约定一种下面的加密方法let encryptData = sm4.encrypt(msg, key) // 加密,默认输出 16 进制字符串,默认使用 pkcs#7 填充(传 pkcs#5 也会走 pkcs#7 填充) let encryptData = sm4.encrypt(msg, key, {padding: 'none'}) // 加密,不使用 paddinglet encryptData = sm4.encrypt(msg, key, {padding: 'none', output: 'array'}) // 加密,不使用 padding,输出为字节数组let encryptData = sm4.encrypt(msg, key, {mode: 'cbc', iv: 'fedcba98765432100123456789abcdef'}) // 加密,cbc 模式

解密

const sm4 = require('sm-crypto').sm4const encryptData = '这里放加密后的数据' // 可以为 16 进制串或字节数组const key = 'abcdeffedcba98765432100123456789' // 可以为 16 进制串或字节数组,要求为 128 比特用约定的解密方法解密let decryptData = sm4.decrypt(encryptData, key) // 解密,默认输出 utf8 字符串,默认使用 pkcs#7 填充(传 pkcs#5 也会走 pkcs#7 填充)let decryptData = sm4.decrypt(encryptData, key, {padding: 'none'}) // 解密,不使用 paddinglet decryptData = sm4.decrypt(encryptData, key, {padding: 'none', output: 'array'}) // 解密,不使用 padding,输出为字节数组let decryptData = sm4.decrypt(encryptData, key, {mode: 'cbc', iv: 'fedcba98765432100123456789abcdef'}) // 解密,cbc 模式4.baser64

  一般上述的那些会混合baser64使用 一块提一嘴吧   baser64安装

npm install --save js-base64 npm install --save js-base64  --legacy-peer-deps  

引入方法  在main.js中加入 

import {Base64} from 'js-base64'Vue.prototype.$Base64 = Base64;

使用方法 

 let password='asdahsjdj' let encPass=this.$Base64.encode(password);//加密 let decPass=this.$Base64.decode(encPass);//解密

当初为了找到前端的使用方法,搜的脑子疼,为了配合后端加解密测试脑子更疼了,

使用方法的时候千万要主要 前后端保持加解密密钥格式方法的一致性

附上npm网址 :https://www.npmjs.com/package/sm-crypto?activeTab=explore

本文链接地址:https://www.jiuchutong.com/zhishi/288929.html 转载请保留说明!

上一篇:冬日里的科赫尔湖,德国巴伐利亚州 (© Reinhard Schmid/eStock Photo)

下一篇:黑尾塍鹬,荷兰 (© Edward van Altena/Minden Pictures)(黑尾鮰鱼)

  • 华为nova7与华为mate40对比(华为nova7与华为Mate20哪个拍照好)

    华为nova7与华为mate40对比(华为nova7与华为Mate20哪个拍照好)

  • 淘宝问大家在哪里看(淘宝问大家在哪里回复买家)

    淘宝问大家在哪里看(淘宝问大家在哪里回复买家)

  • OPPO手机如何恢复备份(oppo手机如何恢复删除的照片和视频)

    OPPO手机如何恢复备份(oppo手机如何恢复删除的照片和视频)

  • QQ被暂时冻结怎么解除(qq被暂时冻结怎么看恢复时间)

    QQ被暂时冻结怎么解除(qq被暂时冻结怎么看恢复时间)

  • 重置win10会保留驱动吗(w10重置电脑保留还是删除)

    重置win10会保留驱动吗(w10重置电脑保留还是删除)

  • 网络协议都有什么(网络协议有什么语义和同步关系三个要素组成)

    网络协议都有什么(网络协议有什么语义和同步关系三个要素组成)

  • i5与i7的核显一样吗(i5核显和i3核显性能一样吗)

    i5与i7的核显一样吗(i5核显和i3核显性能一样吗)

  • 苹果系统尽量不更新吗(2021苹果系统尽量不更新吗)

    苹果系统尽量不更新吗(2021苹果系统尽量不更新吗)

  • 笔记本电脑贴纸对笔记本有影响吗(笔记本电脑贴纸有必要吗)

    笔记本电脑贴纸对笔记本有影响吗(笔记本电脑贴纸有必要吗)

  • 腾讯视频为什么搜不出来东西(腾讯视频为什么不能用手机号登录)

    腾讯视频为什么搜不出来东西(腾讯视频为什么不能用手机号登录)

  • 还未开通微信是啥意思(为什么还未开通微信)

    还未开通微信是啥意思(为什么还未开通微信)

  • 抖音可以设置不让别人搜到吗(抖音可以设置不让某个人看吗)

    抖音可以设置不让别人搜到吗(抖音可以设置不让某个人看吗)

  • rtk是什么仪器(rtk干嘛用的)

    rtk是什么仪器(rtk干嘛用的)

  • vivo手机太卡了怎么办啊(vivo手机太卡了怎么办才能解决)

    vivo手机太卡了怎么办啊(vivo手机太卡了怎么办才能解决)

  • ios系统字体叫什么(iphone的系统字体)

    ios系统字体叫什么(iphone的系统字体)

  • tcpip协议一共有几层(tcpip主要包括哪些协议)

    tcpip协议一共有几层(tcpip主要包括哪些协议)

  • 三星note10+5g是单模还是双模(三星note10单模5g)

    三星note10+5g是单模还是双模(三星note10单模5g)

  • 怎么解除自动回复信息(怎么解除自动回复微信)

    怎么解除自动回复信息(怎么解除自动回复微信)

  • 数字计算机模拟计算机分类依据(数字计算机模拟计算机)

    数字计算机模拟计算机分类依据(数字计算机模拟计算机)

  • 芒果tv怎么用账号密码登录(芒果tv怎么账号管理)

    芒果tv怎么用账号密码登录(芒果tv怎么账号管理)

  • 苹果手机掉水里了有事吗(苹果手机掉水里立马拿出来怎么处理)

    苹果手机掉水里了有事吗(苹果手机掉水里立马拿出来怎么处理)

  • 什么是地推模式(地推的模式)

    什么是地推模式(地推的模式)

  • 防沉迷怎么修改

    防沉迷怎么修改

  • word无法启动转换器mswrd632(word无法启动转换器WPFT532)

    word无法启动转换器mswrd632(word无法启动转换器WPFT532)

  • 苹果x系列区别(苹果x糸列有什么区别)

    苹果x系列区别(苹果x糸列有什么区别)

  • 不含税的金额
  • 月末转出未交增值税时应借记的科目是
  • 制单会计岗位实验报告
  • 小规模公司房租费发票税率
  • 基本户没有注销对法人有影响吗
  • 预缴增值税怎么填表
  • 员工工伤保险报销走什么科目
  • 年底结账会计处理
  • 房地产预缴土地增值税的账务处理
  • 承兑汇票私人贴现账务怎么处理
  • 特别纳税调整后 需要更正申报吗
  • 购买设备的增值税是支出吗
  • 私营独资企业需要做账吗
  • 企业所得税退税怎么做账务处理
  • 纳税申报方式怎么修改
  • 未提足折旧的房产,推倒重置的财务处理到底有没有差异
  • 财务报表依据的会计记录
  • 报销款冲抵其他应收款怎么做账?
  • 管理费用怎么记忆
  • 租个人房屋办公怎么租
  • 建设单位对工程施工的评价意见
  • 固定资产清理借贷方向增减变动
  • 兼营行为的含义
  • intelin
  • 暂估成本的会计处理
  • 华为鸿蒙harmonyos刷机
  • 操作系统的内存映射
  • 上市公司股票如何套现
  • 对公账户代扣
  • 为什么磁盘会消失
  • 汽车运输企业的实际成本计算单位是
  • 当人力资源短缺时,用什么方法增加人力资源?
  • php分页页码动态的实现
  • vue中遇到的问题
  • 个人所得税累计扣除是什么意思
  • 购税盘分录
  • 装修费用当月摊还是次月摊销
  • vue setstate
  • vue面试题2020
  • 时间序列模型ARIMA的优缺点
  • hostnamectl命令
  • 重分类调整分录汇总表什么情况填写
  • 外管证异地预缴税款是什么意思
  • mongodb $and
  • spring10
  • 中国互联网创业成功的年轻人
  • 房地产预计毛利率企业所得税
  • 增值税发票抵扣联的作用
  • 当月开票可以当月勾选吗
  • 销项发票属于哪个科目
  • 什么叫政府补贴学位生
  • 差额征收的会计分录
  • 上市公司限制性股票个人所得税
  • 物流公司的修理工资高吗
  • 在贫困户入股分红大会上的讲话
  • 公司购买的商品质量问题能用12315投诉吗
  • 信息技术服务费可以全额抵扣吗
  • 利润率百分百是什么意思
  • 抵扣进项税额必须用专用发票吗
  • 建筑企业其他业务收入范围
  • sql server触发器实验
  • windows禁止安装
  • win1020h2版本问题
  • centos怎么备份
  • linux系统中
  • mac 怎么复制文件
  • windows10新功能
  • mac 阿里旺旺怎么使用
  • mini program是什么
  • 用python进行图像处理
  • javascript字符串操作函数
  • jquery倒计时60秒
  • 批处理字符串截取
  • Jquery针对tr td的一些实用操作方法(必看篇)
  • 社保当月减员当月还可以增加上吗
  • 在监狱要花钱吗
  • 河北电子税务局社保缴费流程
  • 大班直播课怎么上
  • 告知承诺和非告知承诺
  • 党建税收宣传
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设