日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端端使用非对称加密解密

發布時間:2023/12/18 HTML 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端端使用非对称加密解密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

什么是非對稱加密?什么是對稱加密?

對稱加密算法在加密和解密時使用的是同一個秘鑰;而非對稱加密算法需要兩個密鑰來進行加密和解密,這兩個秘鑰是公開密鑰(public key,簡稱公鑰)和私有密鑰(private key,簡稱私鑰)。

A要傳給B一句話(需要保密),就由B生成一對公鑰和私鑰存好,公鑰就好比一把鎖,鑰匙就是私鑰。B只需要把鎖給A,A把那句話鎖起來,交還給B,在這過程中,即使大家都能看到公鑰(鎖),也是不知道那句話是啥的,然后B拿到鎖好的機密,拿只有自己才有的私鑰(鑰匙)解開,這個差不多就是非對稱加密。

工作流程?

我這邊就分為前后端來闡述:

  • 首先,我在后端生成一對密鑰(公鑰和私鑰)并將公鑰向其前端公開。

  • 然后,前端得到公鑰后,使用該公鑰對咬進行加密的信息進行加密(比如賬戶密碼),加密后將加密的信息再傳給后端

  • 后端根據自己保存的另一把專用密鑰(私鑰)對加密后的信息進行解密,就能得到原信息,這邊后端只能用其專用密鑰(私鑰)解密由對應的公鑰加密后的信息。

  • 這樣即使攻擊者截獲了傳輸的密文,并得到了前端的公鑰,也無法破解密文,因為只有后端保存的私鑰才能解密密文
    這是相對比較安全的做法。

  • 實操

    這邊我前端部分采用的是jsencrypt包,我這邊是使用Vue腳手架,所以示例代碼也是腳手架的

    前端部分

    先安裝個依賴包

    npm install jsencrypt --save

    然后引入

    import JSEncrypt from 'jsencrypt/bin/jsencrypt'

    使用它

    let $JSEncrypt = new JSEncrypt() // 創建實例// 后端給的公鑰 let pubKey = `-----BEGIN PUBLIC KEY----- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -----END PUBLIC KEY-----`this.$JSEncrypt.setPublicKey(pubKey) // 設置公鑰// 將加密的密文傳給后端 let res = await API$login({account: $JSEncrypt.encrypt(this.account), // 要加密的內容pwd: $JSEncrypt.encrypt(this.pwd) // 要加密的內容 });

    雜:前端解密過程

    this.$JSEncrypt.setPrivateKey(privateKey) let getWord = this.$JSEncrypt.decrypt(rsaPassWord) // 解密 console.log(getWord) // 輸出,可以在控制臺看到解密得到的字段
    然后后端要解密密文做判斷

    后端我這邊用的是nodeJS
    安裝依賴包

    npm install node-jsencrypt --save

    這邊不用裝前端的那個依賴包,會報錯,因為那個包只支持游覽器環境

    使用它

    const jsencrypt = require("node-jsencrypt"); const $JSEncrypt = jsencrypt(); let priva teKey =`-----BEGIN PRIVATE KEY----- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----END PRIVATE KEY-----` $JSEncrypt.setPrivateKey(privateKey)console.log($JSEncrypt.decrypt(account)) // 解密內容 console.log($JSEncrypt.decrypt(pwd)) // 解密內容

    總結

    以上是生活随笔為你收集整理的前端端使用非对称加密解密的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。