位置: 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)(黑尾鮰鱼)

  • 真我q3s怎么打开悬浮球(真我Q3s怎么打开NFC)

    真我q3s怎么打开悬浮球(真我Q3s怎么打开NFC)

  • 段表始址和段表长度存放在(段表的概念)

    段表始址和段表长度存放在(段表的概念)

  • 一个手机怎么弄两个健康码(一个手机怎么弄两个抖音号)

    一个手机怎么弄两个健康码(一个手机怎么弄两个抖音号)

  • 后压屏鉴别方法(后压屏怎么鉴别)

    后压屏鉴别方法(后压屏怎么鉴别)

  • 电脑续航是什么意思(电脑续航能力差怎么办)

    电脑续航是什么意思(电脑续航能力差怎么办)

  • 苹果外音喇叭声音小(苹果手机外音喇叭不响了怎么修)

    苹果外音喇叭声音小(苹果手机外音喇叭不响了怎么修)

  • ppu是什么意思(ppu是什么材料)

    ppu是什么意思(ppu是什么材料)

  • 打印机error灯一直闪(打印机error灯一直闪怎么回事)

    打印机error灯一直闪(打印机error灯一直闪怎么回事)

  • 荣耀hryal00ta是什么型号(荣耀hry-al00a是什么型号的手机)

    荣耀hryal00ta是什么型号(荣耀hry-al00a是什么型号的手机)

  • 华为畅联通话支持哪些机型(华为畅联通话支持哪些手机型号)

    华为畅联通话支持哪些机型(华为畅联通话支持哪些手机型号)

  • 计算机主要技术指标通常是指(计算机主要技术指标通常包)

    计算机主要技术指标通常是指(计算机主要技术指标通常包)

  • 充话费显示不支持此号码什么意思(充话费没有反应)

    充话费显示不支持此号码什么意思(充话费没有反应)

  • word文档怎么查修改记录(word文档怎么查找指定内容)

    word文档怎么查修改记录(word文档怎么查找指定内容)

  • 哔咔漫画苹果怎么下(哔咔漫画苹果怎么用)

    哔咔漫画苹果怎么下(哔咔漫画苹果怎么用)

  • 手机qq天气怎么设置城市(手机qq天气怎么授权位置)

    手机qq天气怎么设置城市(手机qq天气怎么授权位置)

  • 小米cc9pro支持无限充电吗(小米cc9pro有没有无线充电)

    小米cc9pro支持无限充电吗(小米cc9pro有没有无线充电)

  • 快手一直闪退怎么办(快手经常闪退)

    快手一直闪退怎么办(快手经常闪退)

  • 淘宝消息未读能撤回吗(淘宝消息已读变成未读)

    淘宝消息未读能撤回吗(淘宝消息已读变成未读)

  • 华为mate20手电筒在哪(华为mate20手电筒怎么设置)

    华为mate20手电筒在哪(华为mate20手电筒怎么设置)

  • 书加加缓存的文件在哪(书籍缓存之后在文件管理的哪个位置)

    书加加缓存的文件在哪(书籍缓存之后在文件管理的哪个位置)

  • 华为荣耀20的耳机插口在哪里(华为荣耀20的耳机怎么用)

    华为荣耀20的耳机插口在哪里(华为荣耀20的耳机怎么用)

  • 电脑上如何打出@符号(电脑上如何打出顿号)

    电脑上如何打出@符号(电脑上如何打出顿号)

  • .net是什么语言(.net属于什么)

    .net是什么语言(.net属于什么)

  • Broken Pipe问题及其解决(broken pipe write failed)

    Broken Pipe问题及其解决(broken pipe write failed)

  • 小规模纳税人的账务处理
  • 交强险怎么报销流程
  • 已认证发票对方红冲应该怎么做账
  • 团建费用途
  • 资产重组账务处理 会计视野
  • 长期股权投资超过50%
  • 哪些银行承兑汇票不能收的名单
  • 应收账款管理制度设计毕业设计
  • 发票缴税怎么交的
  • 哪些费用应该计税
  • 金融业的增值税
  • 没有发票怎么报销入账
  • 协议报价税率与开出的发票不一致怎么办?
  • 代理报关业务
  • 发票连号不许报销吗
  • 医院医保统筹支付后还能报销吗
  • 收到投资款怎么做凭证
  • 领款凭证可以当收据吗
  • 月末利润分配的账务处理
  • 增值税发票总金额是含税金额吗
  • 个税所得期和所得税区别
  • 取得走逃失联企业的异常增值税发票如何处理
  • 收回已核销的坏账并入账是什么意思
  • 应付职工薪酬的贷方表示什么
  • windows10如何开热点
  • bios设置启动顺序(图解说明)
  • 给客户样品需要收钱吗
  • 国家减免税款怎么申请
  • 公司和个人分别交税一部分吗
  • 借股东现金会计分录
  • php随机ua
  • 债券投资账务处理例题
  • uni-app打包h5
  • php技巧
  • vue引入svg图片
  • php上级目录
  • 怎样部署
  • 业务招待费可以开专票抵扣吗
  • 购买电脑做什么分录
  • 开红字信息表后的账务处理
  • 为什么很多公司选择股票上市
  • mongo mysql区别
  • 公司银行开户的经办人有无风险
  • 法人向公司借款如何做账
  • 现在购入不动产怎么办
  • 为取得借款发生的手续费
  • 供货商少开发票如何记账?
  • 营改增对企业有什么弊端
  • 增值税专用发票怎么开
  • 小微企业可以享受六税两费吗
  • 收到促销服务费会计分录
  • 什么叫做对公转账
  • 收到红字发票如何入账
  • 小规模纳税人做账分录全套流程最新
  • 未开票州
  • 管理费用是负数影响利润表吗
  • 在sql server数据库中
  • 如何恢复数据库删除的文件
  • mysql5.7.35安装
  • win7系统双击不能打开我的电脑
  • window7临时文件
  • 不能在windows7里进行设置的网络位置是
  • centos内存占用进程
  • winxp如何设置自动关机
  • win7系统自带刻录启用
  • jetcar.exe - jetcar是什么进程 有什么作用
  • txt文件打开
  • 平板电脑截图
  • win7系统咋样
  • microsoft build
  • 备份引导分区
  • js是函数式编程语言吗
  • 创建自己的app外卖平台
  • Http TCP 协议
  • javascript对象主要包括
  • android数据存储实验报告
  • 信息页文内画中画广告js实现代码(文中加载广告方式)
  • python快速排序最简单写法
  • 服务费交哪个税目的印花税
  • 从哪里可以免费听歌
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设