前端怎麼用js 進行crypto.js的加密和解密?

微信受權時會用到加解密比較多,當後端寫好連接,讓前端去獲取惟一標識openid,就能夠實現微信受權,可是爲了安全起見,最好不要把獲取到的信息裸露在網址上面,因此後端須要加密用戶的信息,讓前端去解密。css

較爲安全的加密方式:前端

des加密方式vue

CBC是modenpm

PKCS5Padding是padding schemes後端

解密前須要後端提供的是加密前數據(方便去對照解出來數據是否正確)加密後數據祕鑰,還有iv偏移量,不過通常都要本身一個一個的去試。我用過的就是des/CBC/Paddingkey數組

步驟以下:安全

能夠用npm進行下載,而後能夠編寫一個加解密的工具類微信

npm install crypto-js
複製代碼

1.引入crypto.js插件工具

<script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.min.js"></script>
複製代碼

2.就是要解密執行的代碼加密

<script>
        window.onload = function () {
            //須要加密的內容
            let value = '加密地址'
            let jiami = escape(value)
            console.log('加密數據:',jiami)
            let str1 = encryptByDES(jiami);
            console.log('加密後的數據:',str1.toString().toUpperCase())
            let str2 = encodeURI(decryptByDESModeEBC(str1));
            console.log('解密後的數據:',str2)
        }
        //加密的私鑰 
        注意:key和iv咱們均可以更換,可是須要保證的是加解密的key和iv保持一致
        var key = '祕鑰';
        var iv = '偏移量值'
        // DES加密
        function encryptByDES(message) {
            //把私鑰轉換成16進制的字符串
            var keyHex = CryptoJS.enc.Utf8.parse(key);
            //模式爲ECB padding爲Pkcs7
            var encrypted = CryptoJS.DESede.encrypt(message, keyHex, {
                iv: iv,
                mode: CryptoJS.mode.CBC,
                padding: CryptoJS.pad.Paddingkey
            });
            //加密出來是一個16進制的字符串
            // var result_value = CryptoJS.enc.Base64.parse(result_value)
            // // var word2 = RSAdecrypt(parseStr)
            // var parseStr = words.toString(CryptoJS.enc.UTF-8)
            return encrypted.ciphertext.toString();
        }
        //DES  ECB模式解密
        function decryptByDESModeEBC(ciphertext) {
            //把私鑰轉換成16進制的字符串
            var keyHex = CryptoJS.enc.Utf8.parse(key);
            //把須要解密的數據從16進制字符串轉換成字符byte數組
            var decrypted = CryptoJS.DESede.decrypt({
                ciphertext: CryptoJS.enc.Hex.parse(ciphertext)
            }, keyHex, {
                iv: iv,
                mode: CryptoJS.mode.CBC,
                padding: CryptoJS.pad.Paddingkey
            });
            //以utf-8的形式輸出解密事後內容
            // var value = CryptoJS.enc.Base64.parse(value)
            var result_value = decrypted.toString(CryptoJS.enc.Utf8)
            // var result_value = CryptoJS.enc.Base64.parse(result_value)
            // // var word2 = RSAdecrypt(parseStr)
            // var parseStr = words.toString(CryptoJS.enc.UTF-8)
            return result_value
        }
    </script>
複製代碼

我在使用vuejs作一個受權功能的時候就用到過,發現這個crypto-js仍是挺不錯的。

相關文章
相關標籤/搜索