位置: IT常识 - 正文

vue普通加密以及国密SM2、SM3、sm4的使用(vue前端加密)

编辑:rootadmin
vue普通加密以及国密SM2、SM3、sm4的使用 相关网址

推荐整理分享vue普通加密以及国密SM2、SM3、sm4的使用(vue前端加密),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue加密 服务端解密,vue 代码加密,vue 加密解密,vue数据加密,vue 加密解密,vue sha256加密,vue数据加密,vue 加密,内容如对您有帮助,希望把文章链接给更多的朋友!

vue普通加密以及国密SM2、SM3、sm4的使用(vue前端加密)

sm-crypto:https://www.npmjs.com/package/sm-crypto

介绍1. SM2是非对称加密算法

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

2.SM3是一种密码杂凑算法

用于替代MD5/SHA-1/SHA-2等国际算法,适用于数字签名和验证、消息认证码的生成与验证以及随机数的生成,可以满足电子认证服务系统等应用需求,于2010年12月17日发布。它是在SHA-256基础上改进实现的一种算法,采用Merkle-Damgard结构,消息分组长度为512bit,输出的摘要值长度为256bit。

3.SM4是一种分组密码算法

SM4算法是一种分组密码算法。其分组长度为128bit,密钥长度也为128bit。加密算法与密钥扩展算法均采用32轮非线性迭代结构,以字(32位)为单位进行加密运算,每一次迭代运算均为一轮变换函数F。SM4算法加/解密算法的结构相同,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序

普通加密安装依赖npm install crypto-js新建utils/Crypto.js文件/**密码加密工具*/import CryptoJS from 'crypto-js'// 默认的 KEY 与 iv 如果没有给const KEY = CryptoJS.enc.Utf8.parse("12345678901234567890");const IV = CryptoJS.enc.Utf8.parse('12345678901234567890');/** * AES加密 :字符串 key iv 返回base64 */export const Encrypt = (word, keyStr, ivStr) => { let key = KEY; let iv = IV; if (keyStr) { key = CryptoJS.enc.Utf8.parse(keyStr); iv = CryptoJS.enc.Utf8.parse(ivStr); } let srcs = CryptoJS.enc.Utf8.parse(word); var encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding }); return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);}/** * AES 解密 :字符串 key iv 返回base64 * * @return {string} */export const Decrypt = (word, keyStr, ivStr) => { let key = KEY; let iv = IV; if (keyStr) { key = CryptoJS.enc.Utf8.parse(keyStr); iv = CryptoJS.enc.Utf8.parse(ivStr); } let base64 = CryptoJS.enc.Base64.parse(word); let src = CryptoJS.enc.Base64.stringify(base64); let decrypt = CryptoJS.AES.decrypt(src, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding }); let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); return decryptedStr.toString();}/** * 二次拼接:加密前解密后对密码二次处理,增加字符串常量 * * @return {string} */ export const passwordAddStr = 'testAdd'使用—加密import {Encrypt, passwordAddStr} from '@/util/Crypto.js'let password = '123123qwe' + passwordAddStrpassword = Encrypt(password)使用—解密import {Decrypt, passwordAddStr} from '@/util/Crypto.js'let passwordpassword = Decrypt(password).replace(passwordAddStr, '')SM2使用安装依赖npm install sm-crypto新建utils/Crypto.js文件/** * txt:要加密的字段 * * @return {string} */const sm2 = require('sm-crypto').sm2export const encrypt = (txt) => { const cipherMode = 1 ;// 1 - C1C3C2,0 - C1C2C3,默认为1 const publicKey = "秘钥" // 一般由后端定义 let encryptData = sm2.doEncrypt(txt, publicKey, cipherMode ) // 加密结果 return '04' + encryptData}使用—加密import {encrypt} from '@/util/Crypto.js'let password = '1234'password = encrypt(password)使用—解密由后端解密SM3使用安装依赖npm install sm-crypto新建utils/Crypto.js文件/** * txt:要加密的字段 * * @return {string} */const sm3 = require('sm-crypto').sm3export const encrypt = (txt) => { let encryptData = sm3(txt) // 加密结果 return encryptData}使用—加密import {encrypt} from '@/util/Crypto.js'let password = '1234'password = encrypt(password)使用—解密不可解密sm4使用安装依赖npm install sm-crypto新建utils/Crypto.js文件/** * txt:要加密的字段 * key:秘钥 * * @return {string} */const sm4 = require('sm-crypto').sm4export const encrypt = (txt, key) => { let encryptData = sm4.encrypt(txt, key) // 加密结果 return encryptData}使用—加密import {encrypt} from '@/util/Crypto.js'let password = '1234'password = encrypt(password)
本文链接地址:https://www.jiuchutong.com/zhishi/297433.html 转载请保留说明!

上一篇:保姆级Gmapping算法介绍到复现(保姆分为哪些级别)

下一篇:路径规划 | 图解D* Lite算法(附ROS C++/Python/Matlab仿真)(路径规划步骤)

  • 费用先付款后收到发票做账
  • 银行基本户可以变更成一般户吗
  • 基本户购买支票需要什么
  • 上一年度多计提折旧怎么调整
  • 逾期抵扣办理申请书模板
  • 银行理财产品赎回
  • 软件著作权如何入账
  • 公司报销学费属于 薪酬还是福利呢
  • 增值税专用发票开错了咋办
  • 入账发票是什么意思
  • 怎么查找地方教育附加税的计税依据?
  • 案例分析关于拟建科学馆的请示报告
  • 销售不动产如何开票样本
  • 一般纳税人高速公路通行费税率
  • 在建工程抵工程款
  • 食堂伙食费账务处理
  • 计提成本账务处理
  • linux的rz
  • 华为手机屏幕变成黑白怎么调回来
  • uefi+bios
  • 开发票没有银行回单可以入帐吗?
  • 评估报告怎么算合法
  • 股东变更需要提交的资料
  • 收到预付款怎么给客户写协议书
  • 怎么免费获取流量
  • PHP:mb_eregi_replace()的用法_mbstring函数
  • 电子税务局变更办税人员怎么操作
  • 圣米歇尔山 (© Leroy Francis/Getty Images)
  • PHP:Memcached::isPersistent()的用法_Memcached类
  • PHP:pg_result_error_field()的用法_PostgreSQL函数
  • Laravel 5.5 的自定义验证对象/类示例代码详解
  • load与initialize
  • 朝圣者将风马旗扔向甘登寺上方的空中为新年祈福,中国西藏 (© Ian Cumming/plainpicture)
  • vue面试题视频
  • html/css/javascript
  • php静态方法可以被继承吗
  • 资产证券化会计处理案例
  • 一般纳税人暂估入账的会计分录
  • 房屋维修费属于什么税收分类编码
  • dedecms使用教程
  • sql2005安装不上
  • 怎么把python代码发给别人运行
  • 不发工资可以先报警吗
  • 个人社保的缴纳时间
  • 在途资金属于什么科目
  • 开具红字增值税普通发票
  • 疫情捐款可以抵扣增值税吗
  • 城镇土地使用税每年都要交吗
  • sql server数据库中的null(空值)
  • 中小企业应交税费怎么算
  • 行政单位应缴财政税金
  • 银行多扣了钱法律是怎么判
  • 什么情况下固定资产进项税不能抵扣
  • 财务费用多计怎么做账
  • 蔬菜销售方式
  • 负数发票跨月怎么作废
  • 主营业务毛利率和毛利率
  • 公司注销记账凭证还有用吗
  • 员工借支备用金属于现金流量的哪类
  • 扩展什么
  • 在windows中在下列叙述中正确的是
  • win10预览版0x80072ee2
  • win7系统如何打开
  • win8 重装系统
  • windowsxp教程
  • 记录一次博客迁移到Docker上的操作
  • Win10任务栏天气怎么关闭
  • xp怎么关闭自启动
  • (1)cocos2d-x-2.2.4搭建windows开发环境
  • opengl learning中文
  • JavaScript数组删除元素
  • python迭代器的作用
  • 1、BluetoothChat之BluetoothChat.java
  • jquery是怎样实现链式调用的?
  • bootstrap学习
  • 无偿转让股权要交税吗
  • 工会开票要求
  • 湖北商铺契税2021年新规
  • 加强案件查办工作方案
  • 杭州地税局办事大厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设