Contraseña de cuenta front-end: cifrado asimétrico RSA

1. Introducción a RSA
   RSA es un algoritmo de cifrado asimétrico, que es un proceso de cifrado y descifrado mediante un par de claves, que se denominan clave pública y clave privada, respectivamente. En mi proyecto, la clave pública se usa para cifrar y la clave privada para descifrar.

Proceso de cifrado:

(1) El backend JAVA genera un par de claves (clave pública y clave privada), la clave privada no se divulga y el backend la conserva.
(2) Ajuste la interfaz antes de iniciar sesión y obtenga la clave pública proporcionada por el backend. El frontend usa la clave pública para cifrar el mensaje y luego lo transmite al backend.
(3) El backend recibe el mensaje cifrado del frontend y utiliza su propia clave privada para descifrar el mensaje.

   En este proceso, solo hay dos procesos de transferencia. La primera vez es que el backend transfiere la clave pública al frontend. La segunda vez es que el frontend transfiere el mensaje cifrado al backend. Incluso si ambos son interceptados, no hay Peligro porque solo se transmite la clave privada del backend. La clave puede descifrar el mensaje, evitando la filtración del contenido del mensaje. En comparación con el cifrado y descifrado criptográfico utilizados anteriormente, tanto la clave como el desplazamiento se almacenan en el extremo frontal, y este método de clave pública-privada asimétrica es más seguro.
Enlace original: https://blog.csdn.net/weixin_45259626/article/details/107169325

2. Proceso

 1. Instalar dependencias

npm install jsencrypt 

2. Introducción

import { JSEncrypt } from 'jsencrypt';

3. Cifrado

//rsa加密
export function rasEncrypt(key, data) {
  // 新建JSEncrypt对象
  let encryptor = new JSEncrypt();
  // 设置公钥
  encryptor.setPublicKey(key); // key为公钥
  // 加密数据
  return encryptor.encrypt(data); //data就是需要加密的密码
}

4. Descifrado

// ras解密
export function rasDecrypt(privateKey, data) {
   // 新建JSEncrypt对象
   let decrypt= new JSEncrypt();
   // 设置私钥
   decrypt.setPrivateKey(privateKey);
   // 解密数据
   decrypt.decrypt(data);
}

Supongo que te gusta

Origin blog.csdn.net/weixin_65969505/article/details/132410925
Recomendado
Clasificación