相关网址
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。文章来源:https://www.toymoban.com/news/detail-407051.html
3.SM4是一种分组密码算法
SM4算法是一种分组密码算法。其分组长度为128bit,密钥长度也为128bit。加密算法与密钥扩展算法均采用32轮非线性迭代结构,以字(32位)为单位进行加密运算,每一次迭代运算均为一轮变换函数F。SM4算法加/解密算法的结构相同,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序文章来源地址https://www.toymoban.com/news/detail-407051.html
普通加密
安装依赖
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)
到了这里,关于vue普通加密以及国密SM2、SM3、sm4的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!