前端使用jsencrypt.js进行RSA加密,主要用于登录界面

一、 什么是RSA加密?

RSA算法

  1. RSA是一种使用不同的加密密钥与解密密钥的体制,不对称加密算法。公钥加密,私钥解密。
  2. RSA算法是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,一般推荐使用1024位。

二、RSA秘钥生成方式

  1. 网站生成公钥和私钥
    在这里插入图片描述
  2. Windows系统可以使用git命令行工具
  • 单击鼠标右键——git bash here 调出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两个文件,可以利用终端进行查看
$ 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并且创建加密解密的方法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、应用rsaEncrypt.js方法

import { encrypt } from '@/utils/rsaEncrypt'
password=encrypt(password);//对密码进行加密

在用户注册或登录的时候,用公钥对密码进行加密,把加密后的密码传给后端,后端用私钥对加密的内容进行解密,然后进行密码校验或者保存到数据库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值