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

  • ps4手柄怎么开启蓝牙配对(ps4手柄开启蓝牙)

    ps4手柄怎么开启蓝牙配对(ps4手柄开启蓝牙)

  • 苹果11如何清理运行的软件(苹果11如何清理垃圾)

    苹果11如何清理运行的软件(苹果11如何清理垃圾)

  • 改过一次快手号还想改怎么办(快手号改了一次怎么样再改)

    改过一次快手号还想改怎么办(快手号改了一次怎么样再改)

  • 什么情况微信评论消失(什么情况下微信朋友圈评论和点赞会消失)

    什么情况微信评论消失(什么情况下微信朋友圈评论和点赞会消失)

  • 卡点视频是什么意思(卡视频是什么意思啊免费)

    卡点视频是什么意思(卡视频是什么意思啊免费)

  • 华为健康运动不显示步数了怎么办(华为健康运动不显示轨迹)

    华为健康运动不显示步数了怎么办(华为健康运动不显示轨迹)

  • 哔咔小电视播放不出来(哔咔小电影怎么打开)

    哔咔小电视播放不出来(哔咔小电影怎么打开)

  • 自动调节亮度开关消失(自动调节亮度开关在哪)

    自动调节亮度开关消失(自动调节亮度开关在哪)

  • 蓝牙耳机一个声音大一个声音小(蓝牙耳机一个声音特别小)

    蓝牙耳机一个声音大一个声音小(蓝牙耳机一个声音特别小)

  • 华为mate30nfc在哪里打开(mate30nfc在哪里)

    华为mate30nfc在哪里打开(mate30nfc在哪里)

  • 手机电子表格怎么贴照片(手机电子表格怎么做)

    手机电子表格怎么贴照片(手机电子表格怎么做)

  • 判断cpu水冷是否正常(怎么检测水冷散热器是否正常)

    判断cpu水冷是否正常(怎么检测水冷散热器是否正常)

  • iphone11的siri怎么唤醒(苹果11 siri设置)

    iphone11的siri怎么唤醒(苹果11 siri设置)

  • ipad可以做手写笔记吗(ipad 可以手写)

    ipad可以做手写笔记吗(ipad 可以手写)

  • 微信怎么禁止别人拉我入群(微信怎么禁止别人重新加我)

    微信怎么禁止别人拉我入群(微信怎么禁止别人重新加我)

  • 抖音有没有访客记录(抖音来客是什么功能)

    抖音有没有访客记录(抖音来客是什么功能)

  • 魅族手机如何使用小爱同学(魅族手机如何使用OTG功能)

    魅族手机如何使用小爱同学(魅族手机如何使用OTG功能)

  • vivo一直重复开机画面(vivo手机重复开机画面是怎么回事)

    vivo一直重复开机画面(vivo手机重复开机画面是怎么回事)

  • 华为nova5耳机口在哪(华为nova5耳机子插哪里)

    华为nova5耳机口在哪(华为nova5耳机子插哪里)

  • 华为nova5pro摄像头型号(华为nova5pro摄像头参数)

    华为nova5pro摄像头型号(华为nova5pro摄像头参数)

  • QQ音乐怎么清空列表(qq音乐怎么清空最近播放)

    QQ音乐怎么清空列表(qq音乐怎么清空最近播放)

  • 爱奇艺弹幕怎么关闭(爱奇艺弹幕怎么设置一行)

    爱奇艺弹幕怎么关闭(爱奇艺弹幕怎么设置一行)

  • 特效素材在哪里下载(特效素材怎么制作的)

    特效素材在哪里下载(特效素材怎么制作的)

  • 腾讯视频如何投屏到电视(腾讯视频如何投影到电视上)

    腾讯视频如何投屏到电视(腾讯视频如何投影到电视上)

  • 在win10中,删除文件提示“该项目不存在”该怎么办?(win10删除所有内容是什么意思)

    在win10中,删除文件提示“该项目不存在”该怎么办?(win10删除所有内容是什么意思)

  • 盈利能力的概念及内容
  • 代扣个人所得税怎么算
  • 资金账簿印花税和营业账簿的区别
  • 工资社保缴纳计算器
  • 如何查看增值税申报表
  • 会计核算是否健全 填错了有影响吗
  • 季度所得税申报表营业收入怎么填
  • 发票到了款未付账务处理
  • 未达账项有几种情况
  • 在建工程试运行收入和成本怎么处理
  • 建筑行业新老项目对比
  • 无形资产原值变动账务处理
  • 外出参加会议费用怎么算
  • 税务局返还的代征代扣要交增值税吗
  • 小型微利企业所得税优惠政策2023
  • 企业自主招聘有编制吗
  • 小规模纳税人日用品增值税税率
  • 残保金退回属于政府补助吗
  • 五联折叠票和两联折叠票的区别
  • 房地产预缴税金附加可以计提吗
  • 总资产净利率与权益乘数的关系
  • 苹果iphone6s plus打电话没有人名
  • 银行贷款核销后还产生利息吗
  • 股东大会的召集有权
  • 常见的电脑病毒危害
  • 支付中间业务收入怎么算
  • win10通知栏怎么设置
  • php测验
  • dghm.exe是什么程序
  • 微软推出windows11系
  • 契税计税依据及计算方式
  • 会计核算的实训目的
  • PHP:date_sunrise()的用法_Date Time函数
  • 待报解预算收入是社保扣费吗
  • 残保金政策建议
  • yolov5map
  • mysqlbinlog -vv
  • ls命令的作用
  • 下脚料收入计入什么科目
  • 逾期未退押金是否确认收入
  • mysql中regexp_substr函数的使用
  • 一般纳税人无票收入怎么报增值税
  • 差旅费报销可以直接从公账转到个人账户吗
  • mysql常用命令汇总
  • 企业应纳税所得额的计算应遵循权责发生制原则
  • 股权转让分期付款风险
  • 出售其他债权投资产生的收益为什么计入留存收益
  • 季度企业所得税资产总额怎么填
  • 清卡后还可以勾选发票吗
  • 为什么说运输是实现物流合理化的关键
  • 开票系统服务费计入什么费用
  • 息税前利润怎么理解
  • 当期应纳增值税税额的计算流程
  • 无形资产处置的相关费用计入哪里
  • 业务招待费 纳税调增
  • 应交税费属于什么科目借方
  • 什么是暂估入账金额
  • 企业微信对公账户认证
  • 销售净利润怎么算
  • 如何办icp许可证
  • 代扣代缴的增值税为什么可以抵扣
  • mysql导出语句
  • windows2008关闭ie增强
  • win10升级后c盘莫名其妙满了
  • win7 64位旗舰版系统运行游戏提示计算机丢失mxvcp120.dll的解决方法
  • exfat 打不开
  • linux使用ssh远程连接服务器
  • linux应用程序在哪个目录
  • javascript闭包优缺点
  • nodejs模拟点击
  • Begin OpenGL with Python-1st Day,draw a simple sample.
  • jquery的checked
  • webview自定义视频播放器
  • js如何使用
  • 深圳市税务局网上办税大厅官网
  • 长春税务局电话举报
  • 个人所得税完税证明图片
  • 个体工商户两处所得,如何减半个税
  • 税务鉴定收费标准
  • 广东佛山税务局人工电话是多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设