一、 什么是RSA加密?
RSA算法
- RSA是一種使用不同的加密密鑰與解密密鑰的體制,不對稱加密算法。公鑰加密,私鑰解密。
- RSA算法是先生成一對RSA密鑰,其中之一是保密密鑰,由用戶保存;另一個(gè)為公開密鑰,可對外公開,甚至可在網(wǎng)絡(luò)服務(wù)器中注冊。為提高保密強(qiáng)度,一般推薦使用1024位。
二、RSA秘鑰生成方式
- 網(wǎng)站生成公鑰和私鑰
 - Windows系統(tǒng)可以使用git命令行工具
- 單擊鼠標(biāo)右鍵——git bash here 調(diào)出git bash
- 生成私鑰,密鑰長度為1024bit
$ openssl genrsa -out private.pem 1024
Generating RSA private key, 1024 bit long modulus
........++++++
.................++++++
e is 65537 (0x10001)
$ openssl rsa -in private.pem -pubout -out public.pem
writing RSA key
- 生成了private.pem 和 public.pem兩個(gè)文件,可以利用終端進(jìn)行查看
$ cat private.pem
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCb60UwTR+o+Cw91/rWFUlGkwdjr933uGus+7N5XkVTR03eikN0
fmISPZMjHBfORgfXKzm/e503npMNdzUGYpOcwbxcVmRK6kmL+T3++t0NSBiI0mFZ
cmdGph1oNDrNW+xU/ZytogiNW2c5z1o/MJxJvG/Wlvb0Vj3kM2Zywsc1OwIDAQAB
AoGAGwYxLMkBRskU6fcoS7jOxYOwUS/nOgtl5kqN9ehH/cIrFfpC7MsG9oBjoz84
RRFQRJQCY1Tqj/xVIo1ZzGyDhu+vo07RXBeOEv9QCOq/PqTca0q9u6hq9wAsTdUT
jBepfttgrDGICRFeVts3Vf4lDbXiQS6QZTQa9/9GRU16udECQQDIVA8hU0W+sBq8
PftMvWYFMWPG1TazCDHJ+r5GutO3bAPC74rstuoNQOq5kDzmvbkFHUUQPeUEFc+S
zI9oG7kzAkEAxz/NaT9hmOaqNB6jIr//J227v2qL240pHiPV6WmAdJLr3BkqgGV6
y/z4fBTClm1dPhiC289xzBQzUUllD7Xj2QJAVhFvcrTxSS0mP2wt1NmmxGJk6N9g
IelKYun86CyKm8qnjxAV0v//bPRQJKuozsYCgQUDUCgXhfrM9Ng4YNVQawJAFscQ
cGuyeIxGANdPxvUz8gn1YJiJjHvCq5NlLN3GtYzmMa8e0LbJJvCwZ17oL9IoyqR6
sS4x0CavByfgyb79YQJBAIRbZ/touiyyKOUVi1sVQ3reIFKQ7BnezluNxalmmceC
UfxbMitxGdeLsL8uz/OVneodYguZOVumdVVVW3cBSxk=
-----END RSA PRIVATE KEY-----
$ cat public.pem
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCb60UwTR+o+Cw91/rWFUlGkwdj
r933uGus+7N5XkVTR03eikN0fmISPZMjHBfORgfXKzm/e503npMNdzUGYpOcwbxc
VmRK6kmL+T3++t0NSBiI0mFZcmdGph1oNDrNW+xU/ZytogiNW2c5z1o/MJxJvG/W
lvb0Vj3kM2Zywsc1OwIDAQAB
-----END PUBLIC KEY-----
使用jsencrypt的步驟
1、下載jsencrypt
npm install jsencrypt
下載后查看package-lock.json文件查看jsencrypt是否下載成功及其版本 
2、引入jsencrypt并且創(chuàng)建加密解密的方法rsaEncrypt.js
rsaEncrypt.js
import JSEncrypt from 'jsencrypt/bin/jsencrypt'
//公鑰
const publicKey=''
//私鑰
const privateKey=''
//公鑰加密
export function encrypt(passwd){
const encryptor=new JSEncrypt()
encryptor.setPublicKey(publicKey)
return encryptor.encrypt(passwd)
}
//私鑰解密
export function decrypt(passwd){
const encryptor=new JSEncrypt()
encryptor.setPrivateKey(privateKey)
return encryptor.decrypt(passwd)
}
3、應(yīng)用rsaEncrypt.js方法
import { encrypt } from '@/utils/rsaEncrypt'
password=encrypt(password);//對密碼進(jìn)行加密
在用戶注冊或登錄的時(shí)候,用公鑰對密碼進(jìn)行加密,把加密后的密碼傳給后端,后端用私鑰對加密的內(nèi)容進(jìn)行解密,然后進(jìn)行密碼校驗(yàn)或者保存到數(shù)據(jù)庫。
|