Vue密碼登陸加密RSA實(shí)現(xiàn)方案
Vue密碼登陸加密RSA方案
有一個(gè)項(xiàng)目需求需要在前段登陸的時(shí)候把登錄密碼加密后發(fā)送,這個(gè)地方其實(shí)很簡(jiǎn)單,加密的時(shí)候可以使用md5、可以使用sha1,也可以使用現(xiàn)在這個(gè)方式加密,就簡(jiǎn)單記錄一下沒(méi)啥。
RSA是啥
RSA加密算法是一種 非對(duì)稱加密算法 ,RSA加密使用了"一對(duì)"密鑰.分別是公鑰和私鑰,這個(gè)公鑰和私鑰其實(shí)就是一組數(shù)字!
其二進(jìn)制位長(zhǎng)度可以是1024位或者2048位.長(zhǎng)度越長(zhǎng)其加密強(qiáng)度越大,目前為止公之于眾的能破解的最大長(zhǎng)度為768位密鑰,只要高于768位,相對(duì)就比較安全.所以目前為止,這種加密算法一直被廣泛使用.
RSA加密與解密
- 使用 公鑰 加密的數(shù)據(jù),利用 私鑰 進(jìn)行解密。
- 使用 私鑰 加密的數(shù)據(jù),利用 公鑰 進(jìn)行解密。
安裝依賴
vue使用rsa加密的時(shí)候首先需要安裝一個(gè)依賴,幫助我們實(shí)現(xiàn)加密操作。
npm install jsencrypt
安裝完就可以用了,如果安裝失敗用 cnpm
。
使用
首先在頁(yè)面引用
import { JSEncrypt } from 'jsencrypt'
創(chuàng)建一個(gè)方法,就是使用我們的密碼加密用的。
passwordEncryption(passwordUser) { let publicKey = this.secretKey // 從后臺(tái)獲取公鑰,這個(gè)保存一下,在這里用。 console.log('后臺(tái)公鑰---------> ', publicKey) let encryptor = new JSEncrypt() // 新建JSEncrypt對(duì)象 encryptor.setPublicKey(publicKey) // 設(shè)置公鑰 let passwordEncryp = encryptor.encrypt(passwordUser) // 對(duì)密碼進(jìn)行加密 return passwordEncryp },
然后在需要加密的地方使用就可以了。
let pwd = this.passwordEncryption(this.inputForm.password)
Vue使用RSA加密解密加簽解簽,前端開(kāi)發(fā)工作
(1)A生成一對(duì)密鑰(公鑰和私鑰),私鑰不公開(kāi),A自己保留。公鑰為公開(kāi)的,任何人可以獲取。
(2)A傳遞自己的公鑰給B,B用A的公鑰對(duì)消息進(jìn)行加密。
(3)A接收到B加密的消息,利用A自己的私鑰對(duì)消息進(jìn)行解密。
在這個(gè)過(guò)程中,只有2次傳遞過(guò)程,第一次是A傳遞公鑰給B,第二次是B傳遞加密消息給A,即使都被敵方截獲,也沒(méi)有危險(xiǎn)性,因?yàn)橹挥蠥的私鑰才能對(duì)消息進(jìn)行解密,防止了消息內(nèi)容的泄露。
在Vue中使用步驟
一般是客戶端初始化時(shí)訪問(wèn)服務(wù)端時(shí),服務(wù)端會(huì)生成一對(duì)RSA對(duì),及公鑰和密鑰。
如果前端只需要將要傳給后端的數(shù)據(jù)進(jìn)行加密后傳輸,那么前端可以只要公鑰,通過(guò)公鑰對(duì)要傳輸?shù)膮?shù)進(jìn)行加密后把加密的字符串發(fā)給后端即可,后端自有辦法解密。
如果前端要獲取后端傳過(guò)來(lái)的已經(jīng)加密后的字符串,并且解密使用,那么前端就需要拿到RSA對(duì)立面的私鑰進(jìn)行解密后使用了。
使用步驟
1、安裝依賴
首先引入jsencrypt
npm install jsencrypt --save
2、在main.js中引入
import JsEncrypt from ‘jsencrypt' Vue.prototype.$jsEncrypt = JsEncrypt
3、將加密解密方法封裝到通用的js內(nèi)
let publicKey = ‘這里是封裝的公鑰' let privateKey = ‘這里是封裝的私鑰' //加密方法 RSAencrypt(pas){ //實(shí)例化jsEncrypt對(duì)象 let jse = new JSEncrypt(); //設(shè)置公鑰 jse.setPublicKey(publicKey); console.log(‘加密:'+jse.encrypt(pas)) return jse.encrypt(pas); }, //解密方法 RSAdecrypt(pas){ let jse = new JSEncrypt(); // 私鑰 jse.setPrivateKey(privateKey) console.log(‘解密:'+jse.decrypt(pas)) return jse.decrypt(pas); },
我在項(xiàng)目中的使用如下圖:
運(yùn)行結(jié)果
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue 引入AMap高德地圖的實(shí)現(xiàn)代碼
這篇文章主要介紹了Vue 引入AMap高德地圖的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Vue中l(wèi)ocalStorage的用法和監(jiān)聽(tīng)localStorage值的變化
這篇文章主要介紹了Vue中l(wèi)ocalStorage的用法和監(jiān)聽(tīng)localStorage值的變化,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04vue?+?element-plus自定義表單驗(yàn)證(修改密碼業(yè)務(wù))的示例
這篇文章主要介紹了vue?+?element-plus自定義表單驗(yàn)證(修改密碼業(yè)務(wù)),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-04-04vite+vue3項(xiàng)目集成ESLint與prettier的過(guò)程詳解
這篇文章主要介紹了vite+vue3項(xiàng)目中集成ESLint與prettier的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09webstorm和.vue中es6語(yǔ)法報(bào)錯(cuò)的解決方法
本篇文章主要介紹了webstorm和.vue中es6語(yǔ)法報(bào)錯(cuò)的解決方法,小編總結(jié)了webstorm和.vue中出現(xiàn)的es6語(yǔ)法報(bào)錯(cuò),避免大家采坑,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05vue computed無(wú)法得到this的屬性或方法的解決
這篇文章主要介紹了vue computed無(wú)法得到this的屬性或方法的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07vue+vue-router轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的實(shí)例代碼
今天小編就為大家分享一篇vue+vue-router轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09Vue?處理異步加載順序問(wèn)題之如何在Konva中確保文本在圖片之上顯示
在處理Konva中的異步加載順序問(wèn)題時(shí),確保在圖像加載完成后再添加其他元素是關(guān)鍵,通過(guò)將回調(diào)函數(shù)放在imageObj.onload中,并正確處理變量捕獲,我們可以確保文本總是繪制在圖片之上,這不僅解決了顯示順序的問(wèn)題,也為未來(lái)的調(diào)試提供了明確的方向,感興趣的朋友一起看看吧2024-07-07