js RSA 公钥加密私钥解密

摘要: RSA是一种数学算法,在计算机科学和密码学中有广泛的应用,也是互联网最常用的密码算法之一。RSA算法可以用来加密和解密数据。本文主要介绍了 RSA公钥加密和私钥解密的原理,并通过代码实现了 RSA公钥加密私钥解密功能。

RSA公钥加密是一种数字签名技术,它使用密钥对传输的数据进行签名,并用密钥对签名数据进行解密。

打开网易新闻 查看更多图片

  1. 原理

在我们使用密码加密的时候,一般会使用两种加密方式:对称加密和非对称加密。我们通常会使用对称加密来实现数据的加密和解密功能,其中对称加密的特点是加密和解密用同一把密钥,我们只需要一个密钥就可以对数据进行解密,而非对称加密则相反。

RSA算法的原理是:首先,我们可以将输入的数字分成n份(n为素数),然后使用公钥对每一份数字进行签名,并将其转换成n个私钥进行解密。私钥中只有一个,因此只有私钥才能对密文进行解密。

RSA算法是非对称加密算法,除了对密钥进行签名外,还需要对公钥进行签名,并且需要保证公钥和私钥的长度相等。

  1. 私钥解密

私钥解密就是通过私钥对签名数据进行解密。其实现原理:使用 RSA算法生成一对公钥和私钥,分别用于签名和解密。

以 RSA算法为例,假设A的公钥是公开的,那么A可以使用公钥来签名数据并加密数据,然后使用私钥来解密数据。

解密的方法有很多种,例如:对称密钥加密、数字签名等等。

  1. 公钥加密

公钥加密就是使用一对公钥来对数据进行加密,并使用私钥来对密文进行解密,公钥加密使用的是大数分解,大数分解的本质是找出一对数和大数之和,但是要实现大数分解则需要将原始数据进行拆分。

  1. 逆向例子

以写作猫登录密码pwd加密内容为例子,来说明前端是怎么用rsa加密的,以及后台是怎么用node 和python RSA加密逆向请求成功的。

打开网页,登录去抓包。

打开网易新闻 查看更多图片

我们看到它是某一种加密,点击启动器,寻找入口。

打开网易新闻 查看更多图片

点击进去,格式化代码。

打开网易新闻 查看更多图片

我们看到关键字 setpublickey 和jsencrypt对象,以及加密后的内容,基本上可以确定是RSA公钥加密,甚至公钥都不需要再次寻找了。那接下来就是直接用js来模拟

这里可以用插件,网站中的插件是jsencrypt, node 中可以用 node-rsa 或者node-jsencrypt.

打开网易新闻 查看更多图片

基本上都是这两句话。

python 中使用包rsa,代码就更简单了

打开网易新闻 查看更多图片

复制一下login的请求,在python 中请求一下。

打开网易新闻 查看更多图片

完美!

  1. 总结

本文通过 JavaScript实现了 RSA公钥加密私钥解密的功能,通过这种方法可以让用户更方便地访问 Web应用程序,同时也可以对 Web应用程序进行加密和解密。在实际开发中,我们可以将 RSA公钥加密的方法封装成一个类,然后将其作为方法调用,这样就可以让用户访问 Web应用程序时调用此方法,从而完成对 Web应用程序的加密和解密。另外,我们还可以使用 JavaScript的字符串操作(如 char)和对象操作(如 replace)来完成对 RSA公钥加密私钥解密的功能,这些方法都可以大大简化 Web应用程序的开发。

但是呢,前端直接放公钥私钥的目的,我的确是有点疑惑,有没有其他的方式来避免呢?

像环球度假区的小程序和APP,他们也是前端加密,用的网关,但是它的key是加密的,密钥也是加密的,虽然可以在前端解密,但是也可以防范很多小白了。

还是说有多少公司有实力去用抖音的防爬策略,去用瑞数,5秒盾等人机验证的方法呢?