前端有時把數據傳給后端,也是需要加密的,這里介紹下des加密:
DES 加密算法為最為常見的分組加密算法。其主要思想在於數據位的置換與移位過程,通過16次的迭代加密與最終的逆置換得出最終的密文。DES 的解密方式只需按照加密的逆過程求解即可。由於DES 加密過程的算法是公開的,所以密鑰K的保密就顯得尤為重要,只有發送方與接收方采用相同的密鑰進行加密解密才能獲取明文數據。
在vue中使用DES加密解密需要使用crypto-js插件,首先下載 npm install crypto-js
加密方法如下:
/* * message:需要加密的字符串,對象加密需要轉成json字符串 * key: 密鑰(加密解密密鑰同一個) */ encryptDes (message, key = 'xxxxxxxxxxxxxxxxxxxxx') { const keyHex = cryptoJs.enc.Utf8.parse(key) const option = { mode: cryptoJs.mode.ECB, padding: cryptoJs.pad.Pkcs7 } const encrypted = cryptoJs.DES.encrypt(message, keyHex, option) return encrypted.ciphertext.toString() // 返回hex格式密文,如需返回base64格式:encrypted.toString() }
解密方法如下:
/* * message:需要解密的字符串, * key: 密鑰(加密解密密鑰同一個) */ decryptDes (message, key = 'xxxxxxxxxxxxxx') { const keyHex = cryptoJs.enc.Utf8.parse(key) const decrypted = cryptoJs.DES.decrypt( { ciphertext: cryptoJs.enc.Hex.parse(message) },// 若message是base64格式,則無需轉16進制hex,直接傳入message即可 keyHex, { mode: cryptoJs.mode.ECB, padding: cryptoJs.pad.Pkcs7 } ) return decrypted.toString(cryptoJs.enc.Utf8) }
擴展:
此外常用的還有MD5加密,MD5將任意長度的“字節串”變換成一個128bit的大整數,並且它是一個不可逆的字符串變換算法。
一般登錄的用戶密碼是用md5加密,系統中保存的也是加密后的用戶密碼,系統並不知道具體的用戶密碼是什么。
MD5的典型應用是對一段Message(字節串)產生fingerprint(指紋),以防止被“篡改”。舉個例子,你將一段話寫在一個叫 readme.txt文件中,並對這個readme.txt產生一個MD5的值並記錄在案,然后你可以傳播這個文件給別人,別人如果修改了文件中的任何內容,你對這個文件重新計算MD5時就會發現。如果再有一個第三方的認證機構,用MD5還可以防止文件作者的“抵賴”,這就是所謂的數字簽名應用。