js RSA 公钥加密私钥解密
摘要: RSA是一种数学算法,在计算机科学和密码学中有广泛的应用,也是互联网最常用的密码算法之一。RSA算法可以用来加密和解密数据。本文主要介绍了 RSA公钥加密和私钥解密的原理,并通过代码实现了 RSA公钥加密私钥解密功能。
RSA公钥加密是一种数字签名技术,它使用密钥对传输的数据进行签名,并用密钥对签名数据进行解密。
- 原理
在我们使用密码加密的时候,一般会使用两种加密方式:对称加密和非对称加密。我们通常会使用对称加密来实现数据的加密和解密功能,其中对称加密的特点是加密和解密用同一把密钥,我们只需要一个密钥就可以对数据进行解密,而非对称加密则相反。
RSA算法的原理是:首先,我们可以将输入的数字分成n份(n为素数),然后使用公钥对每一份数字进行签名,并将其转换成n个私钥进行解密。私钥中只有一个,因此只有私钥才能对密文进行解密。
RSA算法是非对称加密算法,除了对密钥进行签名外,还需要对公钥进行签名,并且需要保证公钥和私钥的长度相等。
- 私钥解密
私钥解密就是通过私钥对签名数据进行解密。其实现原理:使用 RSA算法生成一对公钥和私钥,分别用于签名和解密。
以 RSA算法为例,假设A的公钥是公开的,那么A可以使用公钥来签名数据并加密数据,然后使用私钥来解密数据。
解密的方法有很多种,例如:对称密钥加密、数字签名等等。
- 公钥加密
公钥加密就是使用一对公钥来对数据进行加密,并使用私钥来对密文进行解密,公钥加密使用的是大数分解,大数分解的本质是找出一对数和大数之和,但是要实现大数分解则需要将原始数据进行拆分。
- 逆向例子
以写作猫登录密码pwd加密内容为例子,来说明前端是怎么用rsa加密的,以及后台是怎么用node 和python RSA加密逆向请求成功的。
打开网页,登录去抓包。
我们看到它是某一种加密,点击启动器,寻找入口。
点击进去,格式化代码。
我们看到关键字 setpublickey 和jsencrypt对象,以及加密后的内容,基本上可以确定是RSA公钥加密,甚至公钥都不需要再次寻找了。那接下来就是直接用js来模拟
这里可以用插件,网站中的插件是jsencrypt, node 中可以用 node-rsa 或者node-jsencrypt.
基本上都是这两句话。
python 中使用包rsa,代码就更简单了
复制一下login的请求,在python 中请求一下。
完美!
- 总结
本文通过 JavaScript实现了 RSA公钥加密私钥解密的功能,通过这种方法可以让用户更方便地访问 Web应用程序,同时也可以对 Web应用程序进行加密和解密。在实际开发中,我们可以将 RSA公钥加密的方法封装成一个类,然后将其作为方法调用,这样就可以让用户访问 Web应用程序时调用此方法,从而完成对 Web应用程序的加密和解密。另外,我们还可以使用 JavaScript的字符串操作(如 char)和对象操作(如 replace)来完成对 RSA公钥加密私钥解密的功能,这些方法都可以大大简化 Web应用程序的开发。
但是呢,前端直接放公钥私钥的目的,我的确是有点疑惑,有没有其他的方式来避免呢?
像环球度假区的小程序和APP,他们也是前端加密,用的网关,但是它的key是加密的,密钥也是加密的,虽然可以在前端解密,但是也可以防范很多小白了。
还是说有多少公司有实力去用抖音的防爬策略,去用瑞数,5秒盾等人机验证的方法呢?