导航:首页 > 文档加密 > js非对称加密go解密

js非对称加密go解密

发布时间:2025-07-29 16:28:12

‘壹’ jsencrypt实现前端RSA非对称加密解密(vue项目)

最近一个vue项目要求所有密码数据需要使用RSA非对称加密传输,以为挺简单,结果开发过程中还是遇到了些问题,简单做个笔记。同时也希望可以帮助到遇到同样问题的道友门。

重点来了:使用jsencrypt实现RSA非对称加解密
因为这里直接在前端加解密,所以需要一对现成的密钥,我们通过 密钥在线生成器 得到:

然后在需要使用的文件中引入JSEncrypt,我是将所有工具函数都封装在一个js文件的,我就直接在该文件中引入,我看也有人是在main.js中引入的。

到这里我们的加密解密方法就完成了,在需要的地方直接拿过来用就好了!

大功告成!这样就完了?我以为这样就ok了。

当然,如果没有遇到这个bug,就可以忽略下面的内容了。
从上面截图可以看到,重启项目的时候报错: navigator is not defined
而且这个bug有点奇葩,先启动项目再引入jsencrypt就什么问题都没有,但是先引入jsencrypt再启动项目就报错。这也是我前面能顺利执行的原因所在。
通过好一通折腾,用了网上的各种方法,比如在main.js引入jsencrypt、引入jsdom之类的,都没能解决这个问题,最终还是在jsencrypt的git相关 issue 下找到了这个问题的解决方案。

到这里问题就算基本解决了,但是由于项目组不止我一个前端,我不能要求每个同事或者以后接手维护项目的同事都要在node_moles中去替换文件。
所以就采用了另外一种方案:将jsencrypt.js通过在线js压缩器压缩至jsencrypt.min.js中,然后把jsencrypt.min.js放到src/assets/jsencrypt文件夹中,就不用npm install的方式了。
换了种方式,jsencrypt的引用方式需要做出相应的调整:

参考链接: RSA非对称加密传输---前端加密&解密(VUE项目)
https://github.com/travist/jsencrypt/issues/144
PS:才疏学浅,如果有考虑不周之处或者有更好的解决方案,欢迎指正探讨!

‘贰’ js中常见的数据加密与解密的方法

加密在我们前端的开发中也是经常遇见的。本文只把我们常用的加密方法进行总结。不去纠结加密的具体实现方式(密码学,太庞大了)。

常见的加密算法基本分为这几类,

RSA加密:RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。(这才是正经的加密算法)

非对称加密算法:非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法

DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。

AES这个标准用来替代原先的DES

DES/AES我们合并在一起介绍其用法和特点

Base64是一种用64个字符来表示任意二进制数据的方法。base64是一种编码方式而不是加密算法。只是看上去像是加密而已(吓唬人)。

‘叁’ java和js实现 RSA+AES接口验签和参数加密 对称加密非对称加密

在Java和JavaScript中实现RSA+AES的接口验签和参数加密,可以按照以下步骤进行

一、总体流程

  1. 生成AES密钥:调用方生成一个AES密钥,用于对请求参数进行加密。
  2. RSA加密AES密钥:调用方使用接收方的RSA公钥对AES密钥进行加密,确保密钥在传输过程中的安全性。
  3. AES加密请求参数:调用方使用AES密钥对请求参数进行加密。
  4. 传输加密数据:调用方将加密后的请求参数和RSA加密后的AES密钥一起发送给接收方。
  5. RSA解密AES密钥:接收方使用自己的RSA私钥解密AES密钥。
  6. AES解密请求参数:接收方使用解密后的AES密钥对请求参数进行解密。
  7. 验签:接收方对解密后的请求参数进行验签,确保数据的完整性和真实性。

二、Java实现

  1. AES加密解密

    • 使用Java的javax.crypto包中的类来实现AES加密和解密。
    • 需要指定加密模式、填充方式等。
  2. RSA加密解密

    • 使用Java的java.security和javax.crypto包中的类来实现RSA加密和解密。
    • 需要加载RSA公钥和私钥。
  3. 工具类设计

    • 设计AES工具类和RSA工具类,分别负责AES和RSA的加密解密操作。
    • 可以使用单例模式或依赖注入等方式管理这些工具类。
  4. 实体对象和过滤器

    • 设计请求和响应的实体对象,包含与业务相关的成员变量。
    • 设计过滤器,用于在请求到达controller层之前对请求参数进行解密和验签处理。

三、JavaScript实现

  1. AES加密解密

    • 使用Node.js的crypto模块来实现AES加密和解密。
    • 同样需要指定加密模式和填充方式。
  2. RSA加密解密

    • 使用Node.js的nodersa库或类似的库来实现RSA加密和解密。
    • 需要加载RSA公钥和私钥。
  3. 工具函数设计

    • 设计AES和RSA的加密解密工具函数。
    • 这些函数可以在请求发送前和响应接收后被调用。
  4. 请求处理

    • 在发送请求前,使用AES加密请求参数,并使用RSA加密AES密钥。
    • 在接收响应后,使用RSA解密AES密钥,并使用AES解密响应参数。

四、注意事项

阅读全文

与js非对称加密go解密相关的资料

热点内容
在maya中如何退出多边形编译 浏览:878
瓷器款pdf 浏览:988
怎么让安卓手机界面竖屏 浏览:905
利用命令方块快速填满发射器 浏览:567
安卓8核处理器如何 浏览:683
python口诀for 浏览:504
手机126邮件服务器怎么填 浏览:932
devc编译异常 浏览:458
云服务器出租好干嘛 浏览:858
湖南长沙服务器秒杀云主机 浏览:742
nb系列网络型可编程终端 浏览:588
linux启动不了mysql 浏览:674
怎么用服务器来跑包 浏览:639
情智力pdf 浏览:935
教学编程视频软件 浏览:920
linux服务器绑定域名 浏览:704
网络许可加密 浏览:315
优什么的服务器网站 浏览:962
英朗变排量压缩机 浏览:326
单片机遥控编码 浏览:147