JS练手分析:两行代码解决抠下来的RSA代码报错问题

 

RSA是网站中经常用到了的加密算法,看到群友忙活了半天还搞不定抠下来的代码 ,总是报错,都不知道怎么解决这些报错问题。我在这里稍微提一下吧。

 

上次提到的Github地址:

https://github.com/travist/jsencrypt/blob/master/bin/jsencrypt.js

 

将整个代码复制下来,保存到电脑上,我这里保存到了F盘(rsa.js),用 node直接运行下吧:

 

JS练手分析:两行代码解决抠下来的RSA代码报错问题_第1张图片

报错,提示是 navigator 未定义,我们知道navigator 是浏览器的内置对象,在node环境里面是没有,那我们就定义一个好了。你可以如下定义:

var navigator = {};//先这么定义,如果报错了再改

 

将这行代码添加到文件(我这里是rsa.js)的最顶端,保存后再次运行:

 

JS练手分析:两行代码解决抠下来的RSA代码报错问题_第2张图片

 

再次报错,但这次不一样了,说明之前的报错问题可能已经解决了。这行报错是 window 未定义,我们知道 window 是 浏览器的全局对象,在node里面是没有的,但是node里面的有另外的 全局对象 global,代码里面有多window对象的调用,如果简单的 定义一个 window = {} 肯定是不行的,那我们可以把node的全局对象赋值给 window 这个自定义的变量(在node里面,window只是你自定义的一个变量名,和a,b,c没啥区别),使得window这个变量具有全局属性,即:

var window = global;

添加到文件的第二行,并保存,如下图:

 

JS练手分析:两行代码解决抠下来的RSA代码报错问题_第3张图片

 

再次运行,看看效果:

 

JS练手分析:两行代码解决抠下来的RSA代码报错问题_第4张图片

 

发现不报错了, 这种情况十有八九表示已经成功了。下面我们来进行验证。

 

RSA的加密过程如下:

(1)A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。

(2)A传递自己的公钥给B,B用A的公钥对消息进行加密。

(3)A接收到B加密的消息,利用A自己的私钥对消息进行解密。

  在这个过程中,只有2次传递过程,第一次是A传递公钥给B,第二次是B传递加密消息给A,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行解密,防止了消息内容的泄露。

 

看了上面的描述相信你对RSA加密有所了解,即公钥加密,私钥解密。公钥可以多人拥有,但是加密过的数据,只有拿到私钥才能解开,所以破解RSA加密字符串的可能行几乎为0.

 

打开如下网站生成一对密钥吧:

http://web.chacuo.net/netrsakeypair

我这里生成的密钥对是这样的:

 

JS练手分析:两行代码解决抠下来的RSA代码报错问题_第5张图片

 

分别在文件中对其进行设置:

 

JS练手分析:两行代码解决抠下来的RSA代码报错问题_第6张图片

 

然后分别进行加密和解密:

 

JS练手分析:两行代码解决抠下来的RSA代码报错问题_第7张图片

 

再次在node上面运行,看看结果:

 

JS练手分析:两行代码解决抠下来的RSA代码报错问题_第8张图片

 

可以看到 这里 加密字符串和解密的字符串都有了,并且与加密前的字符串是一样的,说明代码没有问题。

 

干就完了!

 

欢迎关注本人微信公众号,会分享更多的干货:

你可能感兴趣的:(Python,爬虫,Python学习笔记)