js

js位异或算法加密解密

Posted by czr on October 15, 2016

举个例子

什么是位异或运算?
就是这个 "^" 符号

答案是 就是把a=2换算成二进制10,b=1换算成二进制01,位异或换算,同位相同为0,相异为1,结果为11=3(10进制); (这个是在一道算法题看到的算法,用来解决找出1到100以内唯一一个奇数个的整数如[1,1,2,2,3,4,4,5,5]);

实例

知道算法,就可以飞起来了,按惯例来张效果图!
加密的

解密的

页面文件就不上了,来看一下js!
     var valueKey=document.querySelector('#valueKey'),
            key=document.querySelector("#key"),
            loock=document.querySelector("#loock"),
            unloock=document.querySelector("#unloock");
    loock.onclick=function(){
        var loockVal=transt(key.value,valueKey.value);
        valueKey.value+="\n\n\n"+loockVal+"\n\n\n"+"加密成功";
        alert("加密成功");
    }
    unloock.onclick=function(){
        var unloockVal=transt(key.value,valueKey.value);
        valueKey.value+="\n\n\n"+unloockVal+"\n\n\n"+"解密成功";
        alert("解密成功");
    }
    function transt(key,val){
        var result="";
        for(var i=0;i<val.length;i++){
            for(var j=0;j<key.length;j++){
                var resultKey=key.charCodeAt(j);//转二进制
                var resultVal=val.charCodeAt(i)^resultKey;
            }
            result+=String.fromCharCode(resultVal);//转10进制
        }
        return result;
    }
可以看出是取出每个字符的二进制来进行位异或运算

Creative Commons License
This work is licensed under a CC A-S 4.0 International License.