位置: 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如何设置返回键(nova7手机怎么设置返回键)

    nova7如何设置返回键(nova7手机怎么设置返回键)

  • 国际上网可以卸载吗(国际上网卸载了怎么下回来)

    国际上网可以卸载吗(国际上网卸载了怎么下回来)

  • 探探是不是要花钱才能聊天(探探是不是花钱才能玩)

    探探是不是要花钱才能聊天(探探是不是花钱才能玩)

  • apple pencil支持mini4吗(Apple Pencil支持机型)

    apple pencil支持mini4吗(Apple Pencil支持机型)

  • 微信朋友圈一条线是不是已经被删除(微信朋友圈一条短线中间一个点怎么弄)

    微信朋友圈一条线是不是已经被删除(微信朋友圈一条短线中间一个点怎么弄)

  • 手机发热与电池老化有关系吗(手机发热电池消耗快是什么原因)

    手机发热与电池老化有关系吗(手机发热电池消耗快是什么原因)

  • qq群文件查看下载人(qq群怎么查看文件下载记录)

    qq群文件查看下载人(qq群怎么查看文件下载记录)

  • 听筒坏了是什么症状(听筒坏了自己能修复)

    听筒坏了是什么症状(听筒坏了自己能修复)

  • 苹果11手机有多长(苹果11手机有多少G)

    苹果11手机有多长(苹果11手机有多少G)

  • 电脑显示屏开机亮一下就不亮了怎么回事(电脑显示屏开机后黑屏怎么回事)

    电脑显示屏开机亮一下就不亮了怎么回事(电脑显示屏开机后黑屏怎么回事)

  • 红米2016101是哪个版(2016年红米型号)

    红米2016101是哪个版(2016年红米型号)

  • xp连投影仪怎么设置

    xp连投影仪怎么设置

  • 什么是角(什么是角色游戏的主要特点)

    什么是角(什么是角色游戏的主要特点)

  • wps替换在哪(WPS替换在哪里)

    wps替换在哪(WPS替换在哪里)

  • 如何知道etc激活成功(如何知道etc己激活)

    如何知道etc激活成功(如何知道etc己激活)

  • 荣耀play3发布时间(华为荣耀play3好久发布的)

    荣耀play3发布时间(华为荣耀play3好久发布的)

  • kindle青春版和经典版区别(kindle经典版和青春版哪个性价比更高)

    kindle青春版和经典版区别(kindle经典版和青春版哪个性价比更高)

  • 炫龙毁灭者bios设置(炫龙毁灭者bios中文对照)

    炫龙毁灭者bios设置(炫龙毁灭者bios中文对照)

  • 手机nfc在哪开(手机nfc哪里开)

    手机nfc在哪开(手机nfc哪里开)

  • 微信零钱即将超额是什么意思(微信零钱即将超限怎么办)

    微信零钱即将超额是什么意思(微信零钱即将超限怎么办)

  • wps的查找在哪里(wps2019查找在哪里)

    wps的查找在哪里(wps2019查找在哪里)

  • 浅水滩上的小蓝鹭,古巴 (© Sergey Uryadnikov/Alamy)(浅水滩怎么样)

    浅水滩上的小蓝鹭,古巴 (© Sergey Uryadnikov/Alamy)(浅水滩怎么样)

  • 织梦缩略图终极解决办法(不变形、居中裁剪)的三种方法(织梦图片要放哪里)

    织梦缩略图终极解决办法(不变形、居中裁剪)的三种方法(织梦图片要放哪里)

  • 待摊费用和无形资产摊销
  • 行政单位总账科目
  • 专票多少钱
  • 可以先注销银行账户吗
  • 广告公司可以开劳务费吗
  • 所得税汇算清缴表在哪里打印
  • 将外购的货物赠送给儿童福利院,进项税
  • 计提工资当月要结转吗?
  • 房产公司增值税和土地增值税
  • 取得建安类专用发票能抵扣进项税吗
  • 地质勘察费用应由谁支付
  • 土地增值税暂行条例实施细则2022
  • 劳务派遣差额征税税率是多少
  • 什么发票可以抵成本
  • 金银制成的金银币及摆件是否征收消费税?
  • mac系统怎么更改输入法
  • 往公户存钱怎么存最划算
  • thinkphp 路由
  • 系统之家哪个系统比较好用
  • 收外汇的账务处理实例
  • 增值税申报时,里面没有数据怎么办
  • 小规模纳税人免税会计分录
  • 收到证券公司异常交易
  • 只用vue可以做网站不?
  • 制造费用的工资怎么结转
  • php获取远程图片文件流
  • 数据库如何迁移数据库表
  • php面试题目100及最佳答案
  • 经营活动现金流为正说明什么
  • 没有银行回单,只有银行对账单,可以入账吗
  • 可视化调参
  • 织梦网站怎么改logo
  • 普通收据能入账嘛
  • 差额冲账法
  • 外贸企业出口退税
  • sqlserver2008r2数据库导出教程
  • 什么情况下适用简易程序
  • 个人股东和法人股东分红纳税
  • 什么企业的应急预案需要备案
  • 公积金由个人全部交,单位违法吗法吗
  • 医院如何开票
  • 取得虚开增值税专用发票罪量刑标准
  • 行政单位应缴预算款原则上按月缴清
  • 红冲发票怎么写分录
  • 监控 固定资产
  • 旅行社差额征收税率多少
  • 购货方享受现金折扣增值税
  • 递延收益影响当期所得税吗为什么
  • 餐饮服务属于什么职业
  • mysqlw3school
  • 怎么提高sql语句
  • sql2000语句
  • 怎么把操作系统转移到另一个盘
  • win8系统怎样查看本机的ip地址
  • win10不是自己的账户
  • linux 文件管理命令
  • explorer.exe进程在哪
  • linux添加用户命令并添加管理员
  • win7arm
  • win7系统谷歌浏览器打不开网页
  • win8.1连不上wifi
  • unity 读取xml文件
  • Unity3D游戏开发培训课程大纲
  • shell编程之循环语句for与while
  • 批处理/a
  • 一篇文章让你彻底读懂德国历史
  • js indexof undefined
  • jquery page
  • android 点击按钮如果数据库有数据就更新,没有就创建
  • 安卓开发依赖文件添加在哪
  • sql怎么增删改
  • 全面解析皮炎
  • 收购发票怎么抵扣申报
  • 报税时一直显示申报中
  • 小规模纳税人购买车辆可以抵扣税吗
  • 如何做好税收工作推动税收事业创新发展
  • 房子办不了产权
  • 宁波银行税务贷简介
  • 什么是双创服务平台
  • 2020年河南麦收时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设