最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端vue2使用國(guó)密SM4進(jìn)行加密、解密具體方法

 更新時(shí)間:2024年07月29日 10:16:48   作者:hibiscusxin  
SM4是一種對(duì)稱加密算法,類似于AES,主要用于數(shù)據(jù)的批量加密,如文件加密、數(shù)據(jù)庫(kù)加密、網(wǎng)絡(luò)通信數(shù)據(jù)加密等,這篇文章主要給大家介紹了關(guān)于前端vue2使用國(guó)密SM4進(jìn)行加密、解密的相關(guān)資料,需要的朋友可以參考下

SM4是一種對(duì)稱加密算法,也被稱為國(guó)標(biāo)SM4。它是在中國(guó)的國(guó)家密碼標(biāo)準(zhǔn)下開(kāi)發(fā)的,主要用于保護(hù)電子數(shù)據(jù)的機(jī)密性和完整性。

SM4算法采用分組密碼工作方式,其分組長(zhǎng)度為128位,密鑰長(zhǎng)度為128位、192位或256位。它是一種分組長(zhǎng)度和密鑰長(zhǎng)度都可變的分組密碼,其使用的密鑰長(zhǎng)度取決于實(shí)際應(yīng)用場(chǎng)景的安全需求。

SM4加密有兩種模式:ECB和CBC。

ECB模式是最簡(jiǎn)單的塊密碼加密模式,加密前根據(jù)加密塊大小分成若干塊,之后將每塊使用相同的密鑰單獨(dú)加密,解密同理。這種模式的優(yōu)點(diǎn)在于簡(jiǎn)單和有利于并行計(jì)算,而且誤差不會(huì)被傳送。然而,ECB模式不能隱藏明文的模式,可能對(duì)明文進(jìn)行主動(dòng)攻擊。

CBC模式則是一種循環(huán)模式(鏈?zhǔn)剑?,前一個(gè)分組的密文和當(dāng)前分組的明文操作后再加密,這樣做的目的是增強(qiáng)破解難度。這種模式不容易主動(dòng)攻擊,安全性好于ECB,適合傳輸長(zhǎng)度長(zhǎng)的報(bào)文,是SSL、IPSec的標(biāo)準(zhǔn)。然而,CBC模式不利于并行計(jì)算,誤差傳遞,還需要初始化向量IV。

這里是在vue2的項(xiàng)目里使用,具體使用方法如下:

1、安裝gm-crypt依賴

npm install gm-crypt

2、在utils文件下新建sm4Util.js

// sm4Utils.js
const SM4 = require("gm-crypt").sm4;
const pwdKey = "pwdKeyketihuan"; //"pwdKeyketihuan"; 密鑰  前后端一致即可,后端提供
let sm4Config = {
      key: pwdKey, //這里這個(gè)key值要與后端的一致,后端解密是根據(jù)這個(gè)key
      mode: "cbc",  // 加密的方式有兩種,ecb和cbc兩種,也是看后端如何定義的
      iv: 'woshiiv', //iv是cbc模式的第二個(gè)參數(shù),也需要跟后端配置的一致, ecb不用iv。 iv是initialization vector的意思,就是加密的初始話矢量,初始化加密函數(shù)的變量,也叫初始向量。(本來(lái)應(yīng)該動(dòng)態(tài)生成的,由于項(xiàng)目沒(méi)有嚴(yán)格的加密要求,直接寫死了)
      cipherType: "base64"
    };

const sm4Util = new SM4(sm4Config); // new一個(gè)sm4函數(shù),將上面的sm4Config作為參數(shù)傳遞進(jìn)去。
    
/* 
 * 加密工具函數(shù)
 * @param {String} text 待加密文本
 */
export function encrypt(text) {
	try {
  		return sm4Util.encrypt(text, pwdKey);
  	} catch {
  		return text;
  	}
}

/*
 * 解密工具函數(shù)
 * @param {String} text 待解密密文
 */
 export function decrypt(text) {
  try {
  		return sm4Util.decrypt(text, pwdKey);
  	} catch {
  		return text;
  	}
}

3、可以直接在使用的文件里面引用使用

方法一

import { encrypt, decrypt } from "@/utils/sm4Util.js" //引入sm4.js  
let passWord = '1q2w3e4r';
// 加密
let passSm4en = encrypt(passWord);
// 解密
let passSm4de = decrypt(passSm4en);

4、或者在utils下面新建propFormat.js

// propFormat.js
import { encrypt, decrypt } from "@/utils/sm4Util.js" //引入sm4.js  
let propFormat = {
    // sm4加密
    encryptFormat: function(str) {
        if (str) {
            return encrypt(str);
        } else {
            return '';
        }
    },
    // sm4解密
    decryptFormat: function(str) {
        if (str) {
            return decrypt(str);
        } else {
            return '';
        }
    }
}

export default propFormat; 

方法二

let passWord = '1q2w3e4r';
// 加密
let passSm4en = this.$util.propFormat.encryptFormat(passWord);
// 解密
let passSm4de = this.$util.propFormat.decryptFormat(passSm4en);

方法三

這種一般用在div展示的時(shí)候,直接解密展示

在propFormat.js同級(jí)的index.js里面引入工具類,并導(dǎo)出

// index.js
// 引入所有的工具類
...
import propFormat from './propFormat.js'
...
// 導(dǎo)出在一個(gè)對(duì)象上
export default {
    ...
    propFormat,
    ...
}

在main里面注入全局

// main.js
...
import vueFilter from './utils/propFormat.js'
...

for (let i in vueFilter) {
    Vue.filter(i, vueFilter[i])
}

// 使用

// 解密
<div class='password'>{{ password | decryptFormat }}</div>

總結(jié) 

到此這篇關(guān)于前端vue2使用國(guó)密SM4進(jìn)行加密、解密的文章就介紹到這了,更多相關(guān)vue2國(guó)密SM4加密解密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue3從0搭建Monorepo項(xiàng)目組件庫(kù)

    Vue3從0搭建Monorepo項(xiàng)目組件庫(kù)

    這篇文章主要為大家介紹了Vue3從0搭建Monorepo項(xiàng)目組件庫(kù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Vue將數(shù)組轉(zhuǎn)換為樹(shù)形結(jié)構(gòu)的兩種實(shí)現(xiàn)方式

    Vue將數(shù)組轉(zhuǎn)換為樹(shù)形結(jié)構(gòu)的兩種實(shí)現(xiàn)方式

    這篇文章主要介紹了Vue將數(shù)組轉(zhuǎn)換為樹(shù)形結(jié)構(gòu)的兩種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Vue.js3.2響應(yīng)式部分的優(yōu)化升級(jí)詳解

    Vue.js3.2響應(yīng)式部分的優(yōu)化升級(jí)詳解

    這篇文章主要為大家介紹了Vue.js3.2響應(yīng)式部分的優(yōu)化升級(jí)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • vue實(shí)現(xiàn)動(dòng)態(tài)路由詳細(xì)

    vue實(shí)現(xiàn)動(dòng)態(tài)路由詳細(xì)

    我們開(kāi)發(fā)后臺(tái)管理系統(tǒng)過(guò)程中,會(huì)由不同的人操作系統(tǒng),有admin(管理員)、superAdmin(超管),及各種運(yùn)營(yíng)、財(cái)務(wù)人員。為了區(qū)別這些人員,會(huì)給不同的人分配不一樣的角色來(lái)展示不同的菜單,這就必須要通過(guò)動(dòng)態(tài)路由來(lái)實(shí)現(xiàn)。下面就來(lái)介紹vue實(shí)現(xiàn)動(dòng)態(tài)路由,需要的朋友可參考一下
    2021-10-10
  • 一文帶你搞懂Vue3?defineModel中的雙向綁定

    一文帶你搞懂Vue3?defineModel中的雙向綁定

    隨著vue3.4版本的發(fā)布,defineModel也正式轉(zhuǎn)正了,它可以簡(jiǎn)化父子組件之間的雙向綁定,是目前官方推薦的雙向綁定實(shí)現(xiàn)方式,下面就跟隨小編一起深入了解一下defineModel的使用吧
    2024-02-02
  • vue中預(yù)覽zip的實(shí)現(xiàn)示例

    vue中預(yù)覽zip的實(shí)現(xiàn)示例

    打包壓縮成zip的東西,再解壓,很麻煩,本文主要介紹了vue中預(yù)覽zip的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Vue全局分頁(yè)組件的實(shí)現(xiàn)代碼

    Vue全局分頁(yè)組件的實(shí)現(xiàn)代碼

    分頁(yè)是很多頁(yè)面都需要實(shí)現(xiàn)的一個(gè)功能,這篇文章主要介紹了Vue全局分頁(yè)組件的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • vue3+Echarts實(shí)現(xiàn)立體柱狀圖的示例代碼

    vue3+Echarts實(shí)現(xiàn)立體柱狀圖的示例代碼

    本文介紹了使用Echarts實(shí)現(xiàn)立體柱狀圖的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-07-07
  • vue2.0 自定義日期時(shí)間過(guò)濾器

    vue2.0 自定義日期時(shí)間過(guò)濾器

    本文給大家?guī)?lái)兩種方法實(shí)現(xiàn)vue2.0 自定義日期時(shí)間過(guò)濾器,需要的的朋友參考下吧
    2017-06-06
  • Vue開(kāi)發(fā)項(xiàng)目中如何使用Font Awesome 5

    Vue開(kāi)發(fā)項(xiàng)目中如何使用Font Awesome 5

    Font Awesome是一套流行的圖標(biāo)字體庫(kù),我們?cè)趯?shí)際開(kāi)發(fā)的過(guò)程中會(huì)經(jīng)常遇到需要使用圖標(biāo)的場(chǎng)景,對(duì)于一些常用的圖標(biāo),我們可以直接在Font Awesome中找到并且使用,這篇文章主要給大家介紹了關(guān)于Vue開(kāi)發(fā)項(xiàng)目中如何使用Font Awesome5的相關(guān)資料,需要的朋友可以參考下
    2021-11-11

最新評(píng)論

阳春市| 息烽县| 炉霍县| 明水县| 九江县| 霍邱县| 宁河县| 安国市| 会理县| 五莲县| 延庆县| 津市市| 甘德县| 会东县| 峨眉山市| 平舆县| 察隅县| 任丘市| 扬州市| 富源县| 鞍山市| 连云港市| 宣威市| 丁青县| 宝坻区| 鲜城| 太保市| 丘北县| 百色市| 安溪县| 克东县| 寿阳县| 英德市| 青浦区| 温泉县| 万宁市| 泗水县| 库车县| 鹰潭市| 海丰县| 武定县|