vue普通加密及國密SM2、SM3和sm4的使用例子
相關網(wǎng)址
sm-crypto:https://www.npmjs.com/package/sm-crypto
介紹
1. SM2是非對稱加密算法
它是基于橢圓曲線密碼的公鑰密碼算法標準,其秘鑰長度256bit,包含數(shù)字簽名、密鑰交換和公鑰加密,用于替換RSA/DH/ECDSA/ECDH等國際算法??梢詽M足電子認證服務系統(tǒng)等應用需求,由國家密碼管理局于2010年12月17號發(fā)布。
2.SM3是一種密碼雜湊算法
用于替代MD5/SHA-1/SHA-2等國際算法,適用于數(shù)字簽名和驗證、消息認證碼的生成與驗證以及隨機數(shù)的生成,可以滿足電子認證服務系統(tǒng)等應用需求,于2010年12月17日發(fā)布。它是在SHA-256基礎上改進實現(xiàn)的一種算法,采用Merkle-Damgard結構,消息分組長度為512bit,輸出的摘要值長度為256bit。
3.SM4是一種分組密碼算法
SM4算法是一種分組密碼算法。其分組長度為128bit,密鑰長度也為128bit。加密算法與密鑰擴展算法均采用32輪非線性迭代結構,以字(32位)為單位進行加密運算,每一次迭代運算均為一輪變換函數(shù)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)
總結
到此這篇關于vue普通加密及國密SM2、SM3和sm4使用的文章就介紹到這了,更多相關vue普通加密及國密使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Vue toRef toRefs toRaw函數(shù)使用示例
這篇文章主要介紹了Vue toRef toRefs toRaw函數(shù)使用示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-03-03
Vue項目使用localStorage+Vuex保存用戶登錄信息
這篇文章主要為大家詳細介紹了Vue項目使用localStorage+Vuex保存用戶登錄信息,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-05-05

