RSA 加密認(rèn)證:jsencrypt.js

簡(jiǎn)介

RSA加密算法是一種非對(duì)稱加密算法(即:加密、解密的密鑰不同),在公開(kāi)密鑰加密和電子商業(yè)中RSA被廣泛使用。通常是生成兩把密鑰,分別是私鑰和公鑰,其中私鑰保密,公鑰對(duì)外公開(kāi)。
而且在眾多項(xiàng)目中都會(huì)用到用戶登錄認(rèn)證的功能塊,作為前后端分離的項(xiàng)目,保證接口敏感數(shù)據(jù)加密,是必要的。

生成密鑰

前端加密

安裝加密工具

npm install jsencrypt --save

創(chuàng)建utils/jsencrypt.js

// 引用
import JSEncrypt from 'jsencrypt'

// 公鑰
const publicKey =
    'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1L6clBdj8TMNTGpyTfNJTmpPI\n'+
    'JgVNcre1I5r5zT05CvDQU4syuJE5AJGGpmABwhfaORhGvFVsBs8x7l71J1T5FlA4\n'+
    '/vQptf+7Ph3K5GhMt0qr7MkQ1IxANPDJIWM6OjxEowAk8XIl6xsq81SlVUmOjjPY\n'+
    'QRSKQx0425mRGNviJQIDAQAB'

// 私鑰
const privateKey =
    'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALUvpyUF2PxMw1Ma\n'+
    'nJN80lOak8gmBU1yt7UjmvnNPTkK8NBTizK4kTkAkYamYAHCF9o5GEa8VWwGzzHu\n'+
    'XvUnVPkWUDj+9Cm1/7s+HcrkaEy3SqvsyRDUjEA08MkhYzo6PESjACTxciXrGyrz\n'+
    'VKVVSY6OM9hBFIpDHTjbmZEY2+IlAgMBAAECgYAiPXQn0fgUjeknrlLCqIcS15Zv\n'+
    '74d3AGPpLmZeKMQWIJQrum4G0sxW6l2WBaEFFAnv6nRFAdhextanB/YX/CvZaONB\n'+
    '6OUvUt/IbZqyaVZ565x5XwPmSZVbTUGeMLS4QoXDe7nBHdlFyWRv7i2C0MjL3XED\n'+
    '0Ogo77u6GbGqvws7DQJBAO6T6CXm+ipOvBVt3QRyRHjIaKWZAM7Rarvssa2uqSZM\n'+
    'tBK8nRftj7/FRR3qJgjO1kLwKr4kRHeoXwDH8TLDYs8CQQDCataUpue8fc+moMHI\n'+
    '3/N9UTvJDYQ4VnZA1gzHi56sgHZijqDuSIwcHh99nuVx0VXLthTyVKEouilX8K7J\n'+
    'jPjLAkARHQDw/xGAyWcKbngFIqEwvMds4X3CWBk846yXFclCWwwrr+Xg2oSOL/tW\n'+
    'Ov6BcTzDTnDydK2Im8Y8yxrNFmDXAkAFKWkBEV1dt8lnlyUN/EQus5VuxRkZldIV\n'+
    '7pjwQ1i3I8IA4+CJ8wslQ/d6ElntJ62rdu4fcPfGaQrn9s/tMfz5AkEAyTYncfa7\n'+
    'P1zq3vhMPG9DQUKK3gtMVLF47r4mHaI1HuhNCILAG4JIPnmOvKOcw7/PrpCIVir3\n'+
    'Wc2UizowAb6w3g=='

// 加密
export function encrypt(txt) {
    const encryptor = new JSEncrypt() // 創(chuàng)建加密對(duì)象實(shí)例
    encryptor.setPublicKey(publicKey) // 設(shè)置公鑰
    return encryptor.encrypt(txt) // 對(duì)數(shù)據(jù)進(jìn)行加密
}

// 解密
export function decrypt(txt) {
    const decryptor = new JSEncrypt() // 創(chuàng)建解密對(duì)象實(shí)例
    decryptor.setPrivateKey(privateKey) // 設(shè)置私鑰
    return decryptor.decrypt(txt) // 對(duì)數(shù)據(jù)進(jìn)行解密
}

使用方式

import { encrypt, decrypt } from '@/utils/jsencrypt';
encrypt(password); // 加密
decrypt(password); // 解密
生成密鑰.png

后端解密

作者為前端小白,不懂后端,請(qǐng)聯(lián)系后端人員處理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容