0


vue普通加密以及国密SM2、SM3、sm4的使用

相关网址

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 如果没有给constKEY= CryptoJS.enc.Utf8.parse("12345678901234567890");constIV= CryptoJS.enc.Utf8.parse('12345678901234567890');/**
 * AES加密 :字符串 key iv  返回base64
 */exportconstEncrypt=(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}
 */exportconstDecrypt=(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}
 */exportconst 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
exportconstencrypt=(txt)=>{const cipherMode =1;// 1 - C1C3C2,0 - C1C2C3,默认为1const 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
exportconstencrypt=(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
exportconstencrypt=(txt, key)=>{let encryptData = sm4.encrypt(txt, key)// 加密结果return encryptData
}

使用—加密

import{encrypt}from'@/util/Crypto.js'let password ='1234'
password =encrypt(password)

本文转载自: https://blog.csdn.net/duanhy_love/article/details/127077219
版权归原作者 hyduan200 所有, 如有侵权,请联系我们删除。

“vue普通加密以及国密SM2、SM3、sm4的使用”的评论:

还没有评论