JS 使用加密工具對數據進行加密解密

前言:在數據交互的過程中難免會使用數據加密的方式進行數據傳輸,其主要的數據傳輸時使用加密的比較多的是登錄模塊,用戶的密碼等重要信息一旦暴漏將會給用戶帶來不可估量的損失,還有就是將一些信息存儲到cookie,localStorage,sessionStorage進行數據存儲的時候有的信息不能直接進行存儲所以要將數據進行加密後再進行存儲,這樣一來就會大大提高用戶信息的安全性,一下介紹幾種加密方法並在學習過程中會持續補充

1. RSA加密解密

使用RSA需要前後端統一一個公鑰或者私鑰一下拿個栗子來說明問題

//公鑰
var PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8HMr2CBpoZPm3t9tCVlrKtTmI4jNJc7/HhxjIEiDjC8czP4PV+44LjXvLYcSV0fwi6nE4LH2c5PBPEnPfqp0g8TZeX+bYGvd70cXee9d8wHgBqi4k0J0X33c0ZnW7JruftPyvJo9OelYSofBXQTcwI+3uIl/YvrgQRv6A5mW01QIDAQAB';
//私鑰
var PRIVATE_KEY = 'MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALwcyvYIGmhk+be320JWWsq1OYjiM0lzv8eHGMgSIOMLxzM/g9X7jguNe8thxJXR/CLqcTgsfZzk8E8Sc9+qnSDxNl5f5tga93vRxd5713zAeAGqLiTQnRffdzRmdbsmu5+0/K8mj056VhKh8FdBNzAj7e4iX9i+uBBG/oDmZbTVAgMBAAECgYEAmgNU5NTDkj9B+Pnt6UU8doSjw3+3j+bV2K2yS3QUOvAUus/Ax7x6ktjWxzCXvDY9IfUil2RNv9vtKEAqYLCWjc+lf8PV/yH1b7NEgyeAPBXtAJRoOnmYL2bdPW92kP9KgxJruF6Dz/C5AmMOncsvq8ABD+9Darn4p8dwj2ZC4O0CQQDf/AHmZsQokEItfCy4mHS9UbxbfIhEUv1ApPh/+Sr7NkJkHWYCtBQo+8jKO6zurAZQgWBPD1XX2UE4R+VIiZazAkEA1wAqtMvGhccyRZr+6kpkpDIa8+9jOE+nGUzqTDvgCID6as8AzOONFVVK6m/UUqkhcJ8Qu1pF36BGojy5BX2KVwJBAJSFpbji0hXXupowqfLp3RcgmNbNWAp+QUJZYhJx5cdYbmO2fssyH+AhPT6knYJR/YnqkDM8hv6vKCkqu2YDHjMCQAOA8TE5EOclM+CGghj3VWSHnIDVKdzFD4gOBNNxNlltIKeU8AJmwunSFgJ0CBXAw9a+ANvMwM7AIeaK7sj0HskCQAvxfDCq7gaNx+pfu0FHG8Gix08A/A6foggBl1fVu+L9sr9ZuOQ3HbXnl28F9ewuB9xdjnLUDjp7W7U0pB+vKoQ=';
var encrypt = new JSEncrypt();
//  使用私鑰加密
encrypt.setPrivateKey(PRIVATE_KEY);
// 使用公鑰加密
encrypt.setPublicKey(PUBLIC_KEY); 
var str = {
"uid":"1223334",
"pwd":"asd"
}
// str是要加密的信息這裏是一個對象也可以是一個單純的字符串
var encrypted = encrypt.encrypt(JSON.stringify(str));
console.log('加密前數據:%o', str);
console.log('加密後數據:%o', encrypted);
var decrypt = new JSEncrypt();
// 使用公鑰解密
decrypt.setPublicKey(PUBLIC_KEY); 
// 使用私鑰解密
decrypt.setPrivateKey(PRIVATE_KEY); 
// 輸入解密的結果
var uncrypted = decrypt.decrypt(encrypted);
console.log('解密後數據:%o', uncrypted);
2. md5加密解密

js中使用
點擊此處下載
引入

<script src="js/md5.js" type="text/javascript"></script>

使用

const str = ''123456
const newStr = hex_md5(str);
console.log(newStr) // 即爲加密後的數據

項目中使用
a. 安裝
cnpm install --save js-md5npm install --save js-md5
b. 引入
import md5 from 'js-md5'
c. 使用

md5(''); // d41d8cd98f00b204e9800998ecf8427e
md5('The quick brown fox jumps over the lazy dog'); // 9e107d9d372bb6826bd81d3542a419d6
md5('The quick brown fox jumps over the lazy dog.'); // e4d909c290d0fb1ca068ffaddf22cbd0
// It also supports UTF-8 encoding
md5('中文'); // a7bac2239fcdcb3a067903d8077c4a07 
// It also supports byte `Array`, `Uint8Array`, `ArrayBuffer`
md5([]); // d41d8cd98f00b204e9800998ecf8427e
md5(new Uint8Array([])); // d41d8cd98f00b204e9800998ecf8427e
// Different output
md5(''); // d41d8cd98f00b204e9800998ecf8427e
md5.hex(''); // d41d8cd98f00b204e9800998ecf8427e
md5.array(''); // [212, 29, 140, 217, 143, 0, 178, 4, 233, 128, 9, 152, 236, 248, 66, 126]
md5.digest(''); // [212, 29, 140, 217, 143, 0, 178, 4, 233, 128, 9, 152, 236, 248, 66, 126]
md5.arrayBuffer(''); // ArrayBuffer
md5.buffer(''); // ArrayBuffer, deprecated, This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.
3. base64加密解密

a. 安裝
cnpm install --save js-base64npm install --save js-base64
b. 引入
let Base64 = require('js-base64').Base64;
c. 使用

Base64.encode('dankogai');  // ZGFua29nYWk=
Base64.encode('小飼弾');    // 5bCP6aO85by+
Base64.encodeURI('小飼弾'); // 5bCP6aO85by-

Base64.decode('ZGFua29nYWk=');  // dankogai
Base64.decode('5bCP6aO85by+');  // 小飼弾
// note .decodeURI() is unnecessary since it accepts both flavors
Base64.decode('5bCP6aO85by-');  // 小飼弾

學習過程中如有發現更好用的加密解密方法會繼續更新歡迎提出寶貴的建議

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章