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

詳解vue的Des加密解密

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

1.安裝

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

這樣是安裝固定版本3.3.0的Des加密包,為什么這樣安裝呢? 因?yàn)槟闶怯糜谛〕绦蜃钚掳姹镜臅?huì)有問(wèn)題出現(xiàn)下面的錯(cuò)誤,這個(gè)模塊來(lái)自瀏覽器,小程序沒(méi)有這個(gè)模塊

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

如果你是用于瀏覽器沒(méi)有問(wèn)題,你可以這樣安裝

npm install crypto-js --save-dev

2.寫(xiě)工具類

(如果你不是和下面java相對(duì)應(yīng)的請(qǐng)看 5)

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

這里是特殊的一種和java相對(duì)應(yīng)

下面列出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è)務(wù)
	//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解密的時(shí)候 出現(xiàn)了

malformed utf-8 data

這個(gè)錯(cuò)誤,所以我把解密方法改成下面這種

//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 下面只放了一個(gè)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進(jìn)制的字符串需要加密的data","我這里放的是16進(jìn)制的字符串key")

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

這里我就不做測(cè)試了,大家自己測(cè)試就好

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;
}

留一個(gè)疑問(wèn)如果你問(wèn)我3Des加密key16位可以嗎?我說(shuō)可以,那報(bào)錯(cuò)怎么辦?

更多關(guān)于vue Des加密解密的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

惠水县| 鄢陵县| 芜湖县| 禄丰县| 凭祥市| 榆社县| 临颍县| 利津县| 昌都县| 安图县| 罗江县| 鸡泽县| 友谊县| 濮阳市| 万盛区| 尼木县| 岐山县| 彭水| 永丰县| 汉寿县| 武宣县| 大丰市| 东明县| 黎平县| 龙里县| 普陀区| 伊金霍洛旗| 仙桃市| 沾化县| 长泰县| 通化县| 阿鲁科尔沁旗| 铜川市| 白玉县| 保靖县| 屏东市| 琼结县| 霍山县| 若羌县| 蕉岭县| 凉城县|