成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

一套簡(jiǎn)單的基于 RSA + AES 加密機(jī)制的前端解決方案

Travis / 2844人閱讀

摘要:前言因公司現(xiàn)有后臺(tái)管理系統(tǒng)項(xiàng)目需對(duì)部分網(wǎng)絡(luò)請(qǐng)求接口的重要數(shù)據(jù)進(jìn)行加密,整合了一套簡(jiǎn)單的基于加密機(jī)制的前端解決方案。用戶已登錄成功,頁面刷新后將會(huì)重新生成,這時(shí)候需從中獲取并和上傳后端,后端重新綁定和。

前言

因公司現(xiàn)有后臺(tái)管理系統(tǒng)項(xiàng)目需對(duì)部分網(wǎng)絡(luò)請(qǐng)求接口的重要數(shù)據(jù)進(jìn)行加密,整合了一套簡(jiǎn)單的基于 RSA + AES 加密機(jī)制的前端解決方案。

參考文獻(xiàn):

crypto 廖雪峰

crypto-js aes 加解密

rsa 加解密

參考 API:

crypto-js

JSEncrypt

依賴

crypto-js: npm i crypto-js

JSEncrypt:npm i jsencrypt

加密流程
先上圖

因項(xiàng)目為后臺(tái)管理系統(tǒng),所以這里會(huì)有兩種業(yè)務(wù)場(chǎng)景:

用戶在未登錄前是沒有鑒權(quán) token 的,需在成功登錄并獲取 token 后和 encryptKey 一并上傳后端,后端才能將 token 與 encryptKey 做綁定。

用戶已登錄成功,頁面刷新后將會(huì)重新生成 aesKey ,這時(shí)候需從 cookie 中獲取 token 并和 encryptKey 上傳后端,后端重新綁定 token 和 encryptKey。

代碼
encryption.js 封裝
import CryptoJS from "crypto-js"
import JSEncrypt from "jsencrypt"

const encryptor = new JSEncrypt()

// 生成 AESKEY
export const aesKey = createAesKey()

export function createAesKey () {
  const expect = 16
  let str = Math.random().toString(36).substr(2)
  while (str.length < expect) {
    str += Math.random().toString(36).substr(2)
  }
  str = str.substr(0, 16)
  return str
}

/**
 * AES 加密
 * @param word 待加密字段
 * @param keyStr 加密 key
 * @returns {string} 返回加密字段
 */
export function aesEncrypt (word, keyStr) {
  keyStr = keyStr || aesKey
  console.log(keyStr)
  const key = CryptoJS.enc.Utf8.parse(keyStr)
  let srcs = ""
  switch (typeof (word)) {
    case "string":
      srcs = CryptoJS.enc.Utf8.parse(word)
      break
    case "object":
      srcs = CryptoJS.enc.Utf8.parse(JSON.stringify(word))
      break
    default:
      srcs = CryptoJS.enc.Utf8.parse(word.toString())
  }
  const encrypted = CryptoJS.AES.encrypt(srcs, key, {iv: key, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7})
  return encrypted.toString()
}

/**
 * AES 解密
 * @param word 待解密數(shù)據(jù)
 * @param keyStr 解密 key
 * @returns {string} 返回解密字符串
 */
export function aesDecrypt (word, keyStr) {
  keyStr = keyStr || aesKey
  const key = CryptoJS.enc.Utf8.parse(keyStr)
  const decrypt = CryptoJS.AES.decrypt(word, key, { iv: key, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
  return CryptoJS.enc.Utf8.stringify(decrypt).toString()
}

/**
 * RSA 設(shè)置公鑰
 * @param val 公鑰
 */
export function setPublicKey (val) {
  encryptor.setPublicKey(val)
}

/**
 * RSA 加密
 * @param data 待加密數(shù)據(jù)
 * @returns {PromiseLike} 返回加密字符串
 */
export function rsaEncrypt (data) {
  return encryptor.encrypt(data)
}
總結(jié)
AES 加解密涉及到的模式(如 CBC、ECB 等)、偏移量和填充等,請(qǐng)參考文中前言提及的文獻(xiàn)和 API

本文僅為解決方案參考,請(qǐng)結(jié)合實(shí)際業(yè)務(wù)需求及業(yè)務(wù)場(chǎng)景自由發(fā)揮

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/104431.html

相關(guān)文章

  • 循序漸進(jìn)學(xué)加密

    摘要:在古典加密算法當(dāng)中,加密算法和密鑰都是不能公開的,一旦泄露就有被破解的風(fēng)險(xiǎn),我們可以用詞頻推算等方法獲知明文。年美國(guó)公司研制的算法是人類歷史上第一個(gè)公開加密算法但不公開密鑰的加密方法,后來成為美國(guó)軍方和政府機(jī)構(gòu)的標(biāo)準(zhǔn)加密算法。 還記得上初二的那年夏天,班里來了一個(gè)新同學(xué),他就住在我家對(duì)面的樓里,于是我們一起上學(xué)放學(xué),很快便成了最要好的朋友。我們決定發(fā)明一套神秘的溝通方式,任何人看到都不...

    Y3G 評(píng)論0 收藏0
  • 循序漸進(jìn)學(xué)加密

    摘要:在古典加密算法當(dāng)中,加密算法和密鑰都是不能公開的,一旦泄露就有被破解的風(fēng)險(xiǎn),我們可以用詞頻推算等方法獲知明文。年美國(guó)公司研制的算法是人類歷史上第一個(gè)公開加密算法但不公開密鑰的加密方法,后來成為美國(guó)軍方和政府機(jī)構(gòu)的標(biāo)準(zhǔn)加密算法。 還記得上初二的那年夏天,班里來了一個(gè)新同學(xué),他就住在我家對(duì)面的樓里,于是我們一起上學(xué)放學(xué),很快便成了最要好的朋友。我們決定發(fā)明一套神秘的溝通方式,任何人看到都不...

    fsmStudy 評(píng)論0 收藏0
  • 【大量干貨】史上最完整Tengine HTTPS原理解析、實(shí)踐與調(diào)試

    摘要:內(nèi)容主要有四個(gè)方面趨勢(shì)基礎(chǔ)實(shí)踐調(diào)試。一趨勢(shì)這一章節(jié)主要介紹近幾年和未來的趨勢(shì),包括兩大瀏覽器和對(duì)的態(tài)度,以及淘寶天貓和阿里云的實(shí)踐情況。完整性是指為了避免網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)被非法篡改,使用算法來保證消息的完整性。 摘要: 本文邀請(qǐng)阿里云CDN HTTPS技術(shù)專家金九,分享Tengine的一些HTTPS實(shí)踐經(jīng)驗(yàn)。內(nèi)容主要有四個(gè)方面:HTTPS趨勢(shì)、HTTPS基礎(chǔ)、HTTPS實(shí)踐、HTTPS...

    snowell 評(píng)論0 收藏0
  • 一種基于http協(xié)議敏感數(shù)據(jù)傳輸方案

    摘要:比如加密算法但是加密也存在局限性,需要定期維護(hù)。當(dāng)然聰明的你可能會(huì)說,那我就使用非對(duì)稱加密算法,比如好了。所以本次結(jié)合了和來實(shí)現(xiàn)我們的數(shù)據(jù)傳輸。發(fā)送方接收到請(qǐng)求返回結(jié)果后,通過約定的方式對(duì)返回結(jié)果進(jìn)行處理,以供后續(xù)使用。 最近公司需要通過公網(wǎng)與其它平臺(tái)完成接口對(duì)接,但是基于開發(fā)時(shí)間和其它因素的考慮,本次對(duì)接無法采用https協(xié)議實(shí)現(xiàn)。既然不能用https協(xié)議,那就退而求其次采用http...

    yagami 評(píng)論0 收藏0
  • SSL:今天截獲,明天解密

    摘要:然而,最近被泄密的文件表明,美國(guó)國(guó)家安全局記錄了龐大的互聯(lián)網(wǎng)流量并且保留其中的加密信息供以后解密分析。的加密套件列表和在的調(diào)查中實(shí)際協(xié)商的加密套件。如果美國(guó)國(guó)家安全局獲得了這些網(wǎng)站的私鑰,除了谷歌以外所有的站點(diǎn)歷史通信都將被解密。 成千上萬的網(wǎng)站和個(gè)人依靠SSL來保護(hù)敏感信息的傳輸,比如密碼、信用卡信息和那些期望通過加密來保障隱私的個(gè)人信息。然而,最近被泄密的文件表明,美國(guó)國(guó)家安全局N...

    ConardLi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<