天天看點

關于使用DES加密和解密的操作

關于使用DES加密和解密的操作

在前端的開發當中我們在和後端的互動中,有些使用者資料或者資訊是比較重要或者需要加強一些安全性。通常我們知道前端的加密方法有MD5,DES,AES,base64,RSA,sha1。今天就獻醜大概說一下我在實際開發中的一些操作見解.有什麼不足的地方請大佬多多指教

準備工作

項目是用vue-cli來開發,是以一些第三方插件或者包的話用npm來管理。對于我這種不細心的人來說,在知道需要用DES加密和解密的時候就直接去百度這些方法了,而忽略了一個重要的問題。就是Js本身有一個強大的加密/解密庫,就是crypto-js。這個玩意非常強大,具體介紹的可以自行百度。是以後面在使用DES加密/解密的時候得用到這個東西。

上代碼

1.首先在項目中引入crypto-js

1.1 通過npm下載下傳

npm install crypto-js
           

當然在國内的話一般都是用淘寶鏡像,畢竟快

cnpm install crypto-js --save --dev
           

2.在項目中建立一個js檔案

關于使用DES加密和解密的操作

這個檔案裡專門放置DES的加密/解密方法

3.在des.js中引入crypto-js

import CryptoJS from 'crypto-js'
export default class Helper {
    // 加密
    static encryptByDES(ciphertext, key) {
        let keyHex = CryptoJS.enc.Utf8.parse(key);
        let ivHex = CryptoJS.enc.Utf8.parse(key);
        let encrypted = CryptoJS.DES.encrypt(ciphertext, keyHex, {
            iv: ivHex,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7
        });
        return encrypted.ciphertext.toString().toUpperCase();
    }
    // 解密
    static decryptByDES(ciphertext, key) {
        let keyHex = CryptoJS.enc.Utf8.parse(key);
        let ivHex = CryptoJS.enc.Utf8.parse(key);
        let decrypted = CryptoJS.DES.decrypt({
                ciphertext: CryptoJS.enc.Hex.parse(ciphertext)
            },
            keyHex, {
                iv: ivHex,
                mode: CryptoJS.mode.CBC,
                padding: CryptoJS.pad.Pkcs7
            }
        );
        return decrypted.toString(CryptoJS.enc.Utf8);
    }
}
           

現在準備工作已經完成了,來看下在和背景實際互動。廢話不多直接上圖

關于使用DES加密和解密的操作

這是請求成功背景傳回的給的加密格式,是以字元串的形式。剛開始比較懵逼,以為是自己請求錯了。但具體看狀态碼是沒問題,後來通過和背景溝通才知道是加密過的。是以這個時候就需要用到之前準備的那些東西了。

4.具體項目中的使用

4.1首先把剛才des.js檔案引入到需要的元件當中

關于使用DES加密和解密的操作

4.2使用引入的這個js檔案裡的加密/解密方法

關于使用DES加密和解密的操作

4.3實際效果

關于使用DES加密和解密的操作

通過解密以後拿到背景傳回真正的資訊。

PS:因為加密/解密給的資料類型都是字元串的,是以在解密完以後需要格式轉換成對象,當然我用的JSON對象。在傳遞給背景的加密資料中也是以字元串的形式形式傳遞給背景。背景接收的話自然有他們自己方法就不多說。

結語:

在使用的過程中,自己也去百度了很多方法。但是這些方法都沒有真正适合自己的,是以在開發過程中浪費了很多無謂的時間。不過好在最後解決了,這次記錄分享一下。希望能幫助有需要的人,有不足的地方請各位大佬多多包涵

繼續閱讀