簡(jiǎn)介
RSA加密算法是一種
非對(duì)稱加密算法(即:加密、解密的密鑰不同),在公開(kāi)密鑰加密和電子商業(yè)中RSA被廣泛使用。通常是生成兩把密鑰,分別是私鑰和公鑰,其中私鑰保密,公鑰對(duì)外公開(kāi)。
而且在眾多項(xiàng)目中都會(huì)用到用戶登錄認(rèn)證的功能塊,作為前后端分離的項(xiàng)目,保證接口敏感數(shù)據(jù)加密,是必要的。
生成密鑰
- RSA會(huì)產(chǎn)生兩個(gè)密鑰,其中公鑰公開(kāi)用于加密,私鑰不公開(kāi)用于解密。
- 點(diǎn)擊訪問(wèn)在線生成密鑰
前端加密
安裝加密工具
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