分享

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

 牛人的尾巴 2022-05-21 发布于安徽

一、 什么是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);//对密码进行加密

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多