sm4國產(chǎn)加密

1、安裝加密gm-crypt依賴

npm install gm-crypt

2、在表單提交方法內(nèi),直接添加下面提供的代碼,適合使用次數(shù)頻率少的情況下使用。

checkPassword() {

? this.$refs.formPass.validate(valid => {

? ? ? if (valid) {

? ? ? ? ? // 引用sm4包進(jìn)行加密

? ? ? ? ? const SM4 = require("gm-crypt").sm4;

? ? ? ? ? let sm4Config = {

? ? ? ? ? ? ? //配置sm4參數(shù)

? ? ? ? ? ? ? key: "GJwsXX_BzW=gJWJW", //這里這個(gè)key值要與后端的一致,后端解密是根據(jù)這個(gè)key

? ? ? ? ? ? ? mode: "cbc", // 加密的方式有兩種,ecb和cbc兩種,這里使用的是cbc,cbc模式還要加一個(gè)iv的參數(shù),ecb不用

? ? ? ? ? ? ? iv: "ZkR_SiNoSOFT=568", //iv是cbc模式的第二個(gè)參數(shù),也需要跟后端配置的一致

? ? ? ? ? ? ? cipherType: "base64" //

? ? ? ? ? };

? ? ? ? ? let sm4 = new SM4(sm4Config); //new一個(gè)sm4函數(shù),將上面的sm4Config作為參數(shù)傳遞進(jìn)去。

? ? ? ? ? accountCenterService.checkVerificationCode({

? ? ? ? ? ? ? newPassword: sm4.encrypt(this.formPass.newPassword) //加密處理明文密碼

? ? ? ? ? }).then(res => {

? ? ? ? ? ? ? if (res.code === STATUSCODE.code01) {

? ? ? ? ? ? ? ? ? this.dialogVisible = false;

? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? this.$message.error(res.msg)

? ? ? ? ? ? ? }

? ? ? ? ? });

? ? ? }

? });

},

方案二,封裝版,作為公共方法調(diào)用

將處理的函數(shù)代碼封裝,然后把加密和解密的方法導(dǎo)出去,作為公共方法調(diào)用,方便多處使用,然后在代碼中引入調(diào)用即可。便于維護(hù)后后期使用。

1、同樣也是先安裝加密gm-crypt依賴

npm install gm-crypt

2、在項(xiàng)目的utils目錄下,新建一個(gè)sm4Util.js作為公共文件使用,

const SM4 = require("gm-crypt").sm4;

const pwdKey = "GJstSK_YBD=gSOFT"; //"GJstSK_YBD=gSOFT"; 密鑰? 前后端一致即可,后端提供

let sm4Config = {

? ? ? key: pwdKey, //這里這個(gè)key值要與后端的一致,后端解密是根據(jù)這個(gè)key

? ? ? mode: "ecb",? // 加密的方式有兩種,ecb和cbc兩種,也是看后端如何定義的,不過要是cbc的話下面還要加一個(gè)iv的參數(shù),ecb不用

? ? ? iv: '1234567891011121', //iv是cbc模式的第二個(gè)參數(shù),也需要跟后端配置的一致 iv是initialization vector的意思,就是加密的初始話矢量,初始化加密函數(shù)的變量,也叫初始向量。(本來應(yīng)該動(dòng)態(tài)生成的,由于項(xiàng)目沒有嚴(yán)格的加密要求,直接寫死一個(gè))

? ? ? cipherType: "base64"

? ? };

const sm4Util = new SM4(sm4Config); // new一個(gè)sm4函數(shù),將上面的sm4Config作為參數(shù)傳遞進(jìn)去。


/*

* 加密工具函數(shù)

* @param {String} text 待加密文本

*/

export function encrypt(text) {

? return sm4Util.encrypt(text, pwdKey);

}

/*

* 解密工具函數(shù)

* @param {String} text 待解密密文

*/

export function decrypt(text) {

? return sm4Util.decrypt(text, pwdKey);

}

3、引入sm4Util.js

import{encrypt,decrypt}from"./sm4Util.js"http://引入sm4.js? 相對路徑

4、在組件中調(diào)用對應(yīng)的方法,將需要進(jìn)行加密的數(shù)據(jù),放入加密方法處理,

// SM4加密傳輸開始-----------------------

const user = 'admin'; // 用戶名

const pass = '123456'; // 密碼

// 開始加密? 用戶名密碼

const usernameSM4 = encrypt(user); //加密后的用戶名

const passwordSM4 = encrypt(pass); //加密后的密碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容