Skip to content

加密解密

RSA非对称加密

前端

  • 前端这里使用的是jsencrypt库,使用npm install jsencrypt安装
  • 一般是在前端使用公钥加密,后端使用私钥解密
  • 生成公钥和私钥的方法可以参考这里
  • 下面是代码示例
ts
import JSEncrypt from "jsencrypt";

const publicKey = `-----BEGIN PUBLIC KEY-----
你的公钥
-----END PUBLIC KEY-----`;

// 加密方法
export const Encrypt = (str: string) => {
  const encrypt = new JSEncrypt();
  encrypt.setPublicKey(publicKey);
  return encrypt.encrypt(str);
};

// 这个一般是后端使用
const privateKey = `-----BEGIN RSA PRIVATE KEY-----
你的私钥
-----END RSA PRIVATE KEY-----`;

// 解密方法
export const Decrypt = (str: string) => {
  const decrypt = new JSEncrypt();
  decrypt.setPrivateKey(privateKey);
  return decrypt.decrypt(str);
};

超长加密

前端

  • 超长加密使用 encryptlong 库 ,使用npm install encryptlong安装
  • 和原生加密只有一个地方不一样,原生是decrypt,这里是decryptLong
  • 使用方法如下

提示

  • 如果改成decryptLong 还是提示message too long,那么就是你的密钥的size可能小了,使用size大一点的重新生成一下密钥
ts
// 加密
export const EncryptLong = (str: string) => {
  const encryptobj = new encrypt();
  encryptobj.setPublicKey(publicKey);
  return encryptobj.encryptLong(str);
};

// 解密
export const DecryptLong = (str: string) => {
  const decryptobj = new encrypt();
  decryptobj.setPrivateKey(privateKey);
  return decryptobj.decryptLong(str);
};

杨利伟的博客