欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS位异或运算制作加密解密

程序员文章站 2022-08-03 13:22:59
解密可通过位异或运算来实现,什么是位异或运算呢?"^"就是js里的位异或运算符号。他的功能十分强大,别看它只是一个小小的符号,它有时进行的运算可是极其深奥的...

解密可通过位异或运算来实现,什么是位异或运算呢?"^"就是js里的位异或运算符号。他的功能十分强大,别看它只是一个小小的符号,它有时进行的运算可是极其深奥的!

接下来,我们先了解一下“^”运算。

“^”的意思是:当两个操作数对应位不相同时结果的相应位即为一,否则为零。当然,这里的对应位是指二进制的位。

例如:1 ^ 2=3。

这是因为1=01,2=10.

1 ^ 2 =11 =3。

小编做了一个样例来帮助大家理解。

代码如下:

var a=1;

var b=2;

var c=a ^ b;

document.write("a"+a+"            b"+b);

document.write("
");

document.write("a ^ b"+c);

document.write("
");

var d=c ^ b;

document.write("c ^ b"+d);

通过输出结果(如图),我们得知a ^ b=c,c ^ b=a。

我们的加密解密就是利用的这个原理。

JS位异或运算制作加密解密

JS位异或运算制作加密解密

加密解密原理:

将需要加密的内容看做a,密钥看做b,a ^ b=加密后的内容c。

而解密时只需要将c ^ 密钥b=原内容a。如果没有密钥,就不能解密!

接下来我们来看一下加密解密的效果图。

JS位异或运算制作加密解密

JS位异或运算制作加密解密

JS位异或运算制作加密解密

JS位异或运算制作加密解密

加密解密还支持多重加密,但是要记得加密的次数,解密时运用相同密钥做解密操作相同次数即可。

不仅如此,加密解密还支持多重不同密钥加密,只要你记得加密使用密钥顺序!

 

接下来我们来看一下代码:

首先是按钮的onclick事件,调用相应的加密解密js函数。

JS位异或运算制作加密解密

接下来我们看一下js部分:

这是相应的onclick事件,从这段代码我们看出,进行加密解密操作的函数是一个函数:ff()。而onclick事件只是做整理输出格式,获取输入框的值等操作

JS位异或运算制作加密解密

然后我们再来看ff()这个函数。这里就是加密解密核心算法

如图,很明显这里通过一个双重嵌套循环,将密钥(b)与要加密的内容(a)逐个拆分,并取他们的 unicode 编码,然后进行位异或运算得到加密后的内容(c)。

而解密时,c代替了a的位置与b进行位异或运算,从而达到解密的目的。

至于unicode编码,是指定字符的编码, 0-- 65535 之间的整数。好巧,与计算机的端口数量一样多,是巧合么?小编不太清楚。

JS位异或运算制作加密解密

关于加密解密的东西就讲到这里了。其实,小编的目的不是只讲一下加密解密,因为有关加密解密的函数也不少,小编只是想说明"^"运算的强大性

另外,学习了这款加密解密,来看一下小编给你留的问题怎样?

解密:密钥为111111

兇宯戠昞杔裴逍皵

看你能否解出!!!小编可是发了一句十分重要的话哦!~\(≧▽≦)/~啦啦啦