欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解vue的Des加密解密

 更新時間:2022年09月14日 16:52:25   作者:笨qiao先飛  
這篇文章主要為大家介紹了vue的Des加密解密使用實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

1.安裝

npm install crypto-js@3.3.0 --save-dev

這樣是安裝固定版本3.3.0的Des加密包,為什么這樣安裝呢? 因為你是用于小程序最新版本的會有問題出現(xiàn)下面的錯誤,這個模塊來自瀏覽器,小程序沒有這個模塊

Native crypto module could not be used to get secure random number.

如果你是用于瀏覽器沒有問題,你可以這樣安裝

npm install crypto-js --save-dev

2.寫工具類

(如果你不是和下面java相對應的請看 5)

在Vue 的目錄下創(chuàng)建一個DES.js的文件,

這里是特殊的一種和java相對應

下面列出java的加密方式 **

//java
private void des(byte[] data, byte[] desKey) {
        try {
            SecretKey key = new SecretKeySpec(desKey, "DES");
            Cipher c1 = Cipher.getInstance("DES" + "/ECB/NoPadding");
            c1.init(Cipher.ENCRYPT_MODE, key);
            byte[] ret = c1.doFinal(data);
        } catch (Exception ignored) {
            ignored.printStackTrace();
        }
    }
//vue
import cryptoJs from 'crypto-js';
//DES加密
export const encryptDes = (message, key) => {
//這里根據(jù)自己的需求去選擇那一種方式   我使用的是下面這倆種適合我的業(yè)務
	//message = cryptoJs.enc.Hex.parse(message)    
	//key = cryptoJs.enc.Hex.parse(key)           
	var keyHex = cryptoJs.enc.Utf8.parse(key)
	var option = {
		mode: cryptoJs.mode.ECB, 
		padding: cryptoJs.pad.NoPadding  //填充模式
	}
	var encrypted = cryptoJs.DES.encrypt(message, key, option)
	return encrypted.ciphertext.toString()
}
//DES解密
export const decryptDes = (message, key) => {
    var keyHex = cryptoJs.enc.Utf8.parse(key)
    var decrypted = cryptoJs.DES.decrypt(
        {
            ciphertext: cryptoJs.enc.Hex.parse(message)
        },
        keyHex,
        {
            mode: cryptoJs.mode.ECB,
            padding: cryptoJs.pad.NoPadding  //填充模式
        }
    )
    return decrypted.toString(cryptoJs.enc.Utf8)
}

我自己在使用上面Des解密的時候 出現(xiàn)了

malformed utf-8 data

這個錯誤,所以我把解密方法改成下面這種

//DES解密
export const decryptDes = (message, key) => {
	var keyHex = cryptoJs.enc.Hex.parse(key)
	var decrypted = cryptoJs.DES.decrypt({
			ciphertext: cryptoJs.enc.Hex.parse(message)
		},
		keyHex, {
			mode: cryptoJs.mode.ECB,
			padding: cryptoJs.pad.NoPadding
		}
	)
	return decrypted.toString()
}

3DES加解密:

只是單純的把cryptoJs.DES 修改為cryptoJs.TripleDES 下面只放了一個3des加密的代碼,解密和上面的同理 選擇自己最合適的方式

//3Des加密
export const encrypt3Des = (message, key) => {
	message = cryptoJs.enc.Hex.parse(message)
	key = cryptoJs.enc.Hex.parse(key)
	var option = {
		mode: cryptoJs.mode.ECB,
		padding: cryptoJs.pad.NoPadding
	}
	var encrypted = cryptoJs.TripleDES.encrypt(message, key, option)
	return encrypted.ciphertext.toString()
}

3.在需要的地方引用

import {
		encryptDes,
		decryptDes,
		encrypt3Des,
		decrypt3Des
	} from "你工具類的路徑"

4.調(diào)用

encryptDes("我這里放的是16進制的字符串需要加密的data","我這里放的是16進制的字符串key")

des加密的key有要求 必須是8的倍數(shù)位的 3des的是24位的(這里也是8的倍數(shù)但是不能是16位的)

這里我就不做測試了,大家自己測試就好

5.VUE的方式

//DES加密
export const encryptDes = (message, key) => {
    var keyHex = cryptoJs.enc.Utf8.parse(key);
    var encrypted = cryptoJs.DES.encrypt(message, keyHex, {
        mode: cryptoJs.mode.ECB,
        padding: cryptoJs.pad.NoPadding
    });
    return encrypted.ciphertext.toString();
}
//DES解密
export const decryptDes = (ciphertext, key) => {
    var keyHex = cryptoJs.enc.Utf8.parse(key);
    var decrypted = cryptoJs.DES.decrypt({
        ciphertext: cryptoJs.enc.Hex.parse(ciphertext)
    }, keyHex, {
        mode: cryptoJs.mode.ECB,
        padding: cryptoJs.pad.NoPadding
    });
    var result_value = decrypted.toString(cryptoJs.enc.Utf8);
    return result_value;
}

留一個疑問如果你問我3Des加密key16位可以嗎?我說可以,那報錯怎么辦?

更多關于vue Des加密解密的資料請關注腳本之家其它相關文章!

相關文章

  • vue-amap根據(jù)地址回顯地圖并mark的操作

    vue-amap根據(jù)地址回顯地圖并mark的操作

    這篇文章主要介紹了vue-amap根據(jù)地址回顯地圖并mark的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue3中element Plus插槽示例詳解

    vue3中element Plus插槽示例詳解

    這篇文章主要介紹了vue3中element Plus插槽,#default=scope定義了一個名為 default 的插槽,并將當前行的數(shù)據(jù)傳遞給一個名為 scope 的變量,本文結合示例代碼介紹的非常詳細,需要的朋友可以參考下
    2024-05-05
  • vue3+vite+vant項目下按需引入vant報錯Failed?to?resolve?import的原因及解決方案

    vue3+vite+vant項目下按需引入vant報錯Failed?to?resolve?import的原因及解決

    這篇文章主要給大家介紹了關于vue3+vite+vant項目下按需引入vant報錯Failed?to?resolve?import的原因及解決方案,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • vue動畫效果實現(xiàn)方法示例

    vue動畫效果實現(xiàn)方法示例

    這篇文章主要介紹了vue動畫效果實現(xiàn)方法,結合完整實例形式分析了vue.js+animate.css實現(xiàn)的動畫切換效果相關操作技巧,需要的朋友可以參考下
    2019-03-03
  • vue項目同時兼容pc和移動端的解決方式

    vue項目同時兼容pc和移動端的解決方式

    我們經(jīng)常在項目中會有支持pc與手機端需求,下面這篇文章主要給大家介紹了關于vue項目同時兼容pc和移動端的解決方式,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • 15 分鐘掌握vue-next函數(shù)式api(小結)

    15 分鐘掌握vue-next函數(shù)式api(小結)

    這篇文章主要介紹了15 分鐘掌握vue-next函數(shù)式api(小結),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • VUE遞歸樹形實現(xiàn)多級列表

    VUE遞歸樹形實現(xiàn)多級列表

    這篇文章主要為大家詳細介紹了VUE遞歸樹形實現(xiàn)多級列表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 解決vue自定義指令導致的內(nèi)存泄漏問題

    解決vue自定義指令導致的內(nèi)存泄漏問題

    這篇文章主要介紹了解決vue自定義指令導致的內(nèi)存泄漏問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Vue項目中如何引入icon圖標

    Vue項目中如何引入icon圖標

    這篇文章主要介紹了Vue如何引入icon圖標,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2018-03-03
  • vue中的路由跳轉(zhuǎn)tabBar圖片和文字的高亮效果

    vue中的路由跳轉(zhuǎn)tabBar圖片和文字的高亮效果

    這篇文章主要介紹了vue中的路由跳轉(zhuǎn)tabBar圖片和文字的高亮效果,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10

最新評論