首页IT科技vue加密传输(vue普通加密以及国密SM2、SM3、sm4的使用)

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

时间2025-08-02 00:28:48分类IT科技浏览7131
导读:相关网址 sm-crypto:https://www.npmjs.com/package/sm-crypto...

相关网址

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 + passwordAddStr password = Encrypt(password) 使用—解密 import {Decrypt, passwordAddStr} from @/util/Crypto.js let password password = Decrypt(password).replace(passwordAddStr, )

SM2使用

安装依赖 npm install sm-crypto 新建utils/Crypto.js文件 /** * txt:要加密的字段 * * @return {string} */ const sm2 = require(sm-crypto).sm2 export 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).sm3 export 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).sm4 export const encrypt = (txt, key) => { let encryptData = sm4.encrypt(txt, key) // 加密结果 return encryptData } 使用—加密 import {encrypt} from @/util/Crypto.js let password = 1234 password = encrypt(password)

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
鸿蒙系统升级快吗(鸿蒙系统好用吗 鸿蒙系统用户升级感受分享) 求二叉树中最大和的路径的实验目的(每日算法之二叉树中和为某一值的路径(三))