在vue、golang搭建的前后端系统中使用jsencrypt包实现RSA加解密功能

在vue、golang搭建的前后端系统中使用jsencrypt包实现RSA加解密功能

RSA算法背景

RSA, 又称为非对称加密算法。该算法基于的想法是:加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥。算法加解密过程为:

  1. 乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
  2. 甲方获取乙方的公钥,然后用它对信息加密。
  3. 乙方得到加密后的信息,用私钥解密。
    在这里插入图片描述

1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。从那时直到现在,RSA算法一直是最广为使用的"非对称加密算法"。毫不夸张地说,只要有计算机网络的地方,就有RSA算法。

这种算法非常可靠,密钥越长,它就越难破解。根据已经披露的文献,目前被破解的最长RSA密钥是768个二进制位。也就是说,长度超过768位的密钥,还无法破解(至少没人公开宣布)。因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全。

安装jsencrypt

直接在github上下载 jsencrypt-master.zip 文件, 链接为sencrypt-master.zip。直接把文件解压,放到vue工程下的 node_modules 下即可。如下图所示:
在这里插入图片描述
代码在使用时, 按照如下方式引入:

import {JSEncrypt} from "js-encrypt"

此外,从工程的包管理角度来讲,还应该在pakage.json文件中添加新引入的包名字和包版本(jsencrypt-master.zip目录下的package.json写明了包的版本号)。如下所示:

"dependencies": {
    "axios": "^0.21.1",
    "jsencrypt": "3.2.1",
    "vue": "^2.6.11"
}

前端加解密代码

在这里插入图片描述
说明:

  1. 上面的代码主要依据 jsencrypt-master.zip 包。该包的加密之后、解密之前都会使用base64方式对数据进行预操作。所以在后端实现中, 同样需要这个操作。
  2. 上面的私钥跟公钥是在linux机器上使用命令行生成的。私钥用于解密,公钥用于加密。命令如下:
openssl genrsa -out rsa_1024_priv.pem 1024 // 生成私钥
openssl rsa -pubout -in rsa_1024_priv.pem -out rsa_1024_pub.pem // 生成公钥

后端加解密功能代码

在这里插入图片描述
上图就是golang实现的加解密功能。主要有两个方面需要注意:

  1. 加密功能:公钥加密 + base64转换
  2. 解密功能:base64转换 + 私钥解密
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值