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

  • 纳税申报的流程是什么
  • 综合保税区是什么意思,举个例子
  • 业务招待费报销要求
  • 质量体系证费用计入什么科目
  • 差旅费抵税怎么算
  • 利息调整的计算公式
  • 附加税减免所得税汇缴的时候需要调整吗
  • 处置固定资产产生的净损失
  • 已贴花的凭证凡修改后所载金额增加的部分应补贴印花
  • 中外合资经营企业法
  • 无形资产加计扣除最新政策
  • 申报抵扣了不做账怎么处理?
  • 支付以前年度的费用会计处理
  • 票据占比不得超过各项贷款的
  • 房地产企业临时售楼部房产据含土地价值吗
  • 产品质量问题怎么处罚
  • 税务审计什么时候进行
  • 天然气的销售需要什么资质
  • 纳税人税号后面的数字
  • 集团内部拆借资金
  • 付款时收到应收票据会计分录怎么做?
  • 违约金扣除吗
  • 存货成本有哪些问题
  • 商场赠送购物券是真的吗
  • 苹果mac怎么禁止百度搜索
  • 回收站已损坏 是否清空该驱动,点鼠标无法操作
  • 标书费没有发票
  • 股份公司注销流程及费用
  • mcappins.exe - mcappins进程是什么文件 什么意思.
  • 微信小程序分成比例
  • 火车票抵扣进项税怎么申报填写
  • php 无限级分类
  • 存货什么时候计提什么时候回转
  • php使用什么开发工具
  • 外贸公司美金账户维护费用
  • 采购和销售都做的叫什么
  • 外籍专家劳务费
  • 工资直接计入管理费用了怎么办
  • 农产品进项税抵扣填报方法
  • 去年未分配利润为负什么意思
  • SQL server 2008安装程序遇到以下错误 sku
  • 高铁票可以抵扣的进项
  • 应付账款的主要成本包括
  • 核定征收的企业需要汇算清缴吗
  • 跨月冲红的发票怎么做会计分录
  • 补开发票交税
  • 纸质承兑汇票怎么兑现步骤
  • 销售退款现金流量表
  • 会计分录的记账要素
  • 未开票收入如何纳税申报
  • 工厂用的工具放计入哪个科目
  • 公司员工出差住酒店费用明细有问题怎么办
  • 印花税计入哪个会计分录
  • 代垫运杂费计入销售收入吗
  • 工程开票金额大写怎么写
  • 房租增值税专用发票需要开多张,单位和数量如何填写
  • 触发器的用法
  • CentOs7.x安装Mysql的详细教程
  • win 10预览版
  • vs显示进程已退出
  • win7打开注册表的命令
  • ic_launcher.xml
  • centos6启动服务的命令
  • win8.1开机进入桌面
  • win7不激活怎么换壁纸
  • qt_5 not found
  • 使用JQuery实现Ctrl+Enter提交表单的方法
  • 序列化为json
  • nodejs网站开发
  • angularjs2
  • python第九套答案
  • unity获取手机型号
  • js最简单的代码
  • 开发 工具
  • 地铁酷跑瞬间移动
  • Android应用开发实训
  • edittext获取焦点弹出键盘
  • 怎么删除天眼查诉讼信息
  • 贵州国家税务局陈开平
  • 税务坚定理想信念心得体会
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设