异或(XOR)运算加密解密算法
本⽂将介绍⼀个简单易⽤的加密/解密算法:使⽤异或(XOR)运算。本算法原理简单,旨在使读者对信息的加密/解密有⼀个更加直观的印象。
XOR算法原理
从加密的主要⽅法看,换位法过于简单,特别是对于数据量少的情况很容易由密⽂猜出明⽂,⽽替换法不失为⼀种⾏之有效的简易算法。
从各种替换法运算的特点看,异或运算最适合⽤于简易加解密运算,这种⽅法的原理是:当⼀个数A和另⼀个数B进⾏异或运算会⽣成另⼀个数C,如果再将C和B进⾏异或运算则C⼜会还原为A。
相对于其他的简易加密算法,XOR算法的优点如下。
台式电脑品牌
(1)算法简单,对于⾼级语⾔很容易能实现。
学生会报名表 (2)速度快,可以在任何时候、任何地⽅使⽤。
(3)对任何字符都是有效的,不像有些简易加密算法,只对西⽂字符有效,对中⽂加密后再解密⽆法还原为原来的字符。
XOR算法实现
上⼀部分介绍了如何使⽤XOR运算进⾏加密/解密的原理,本节将使⽤其加密⽤户的登录信息。根据上⼀⼩节介绍的XOR加密算法的原理,不难写出以下的加密解密函数。⾸先列出加密算法。
1
2
3 //加密函数
4 function myEncrypt($string, $key)
5 {
6 for($i=0; $i
7 {
怎么画兔子又简单又好看
8 for($j=0; $j
9 {
10 $string[$i] = $string[$i]^$key[$j];
11 }
水乡乌镇>TOFD
12 }
13 return $string;
14 }
第4⾏定义了加密函数myEncrypt(),输⼊参数$string为明⽂,⽽$key为密钥;输出为使⽤$key作为密钥并使⽤XOR加密算法产⽣的密⽂。
第6~12⾏的外层for循环对明⽂字符串的每⼀个字符进⾏循环,⽽内层的for循环(第8~11⾏)对明⽂的每⼀字符循环与密钥的每⼀位做异或运算。其原理已经在上⼀⼩节中介绍,不再重述。
同样,与加密函数类似,可以写出下⾯的解密函数。
3 {
4 for($i=0; $i
5 {
6 for($j=0; $j
7 {
8 $string[$i] = $key[$j]^$string[$i];
9 }
男同事
10 }
11 return $string;
#/p/bjbk;
#/p/bjck;
#/p/bjmk;
#/p/bjbz;
#/p/bjcs;
#/p/shdb;
#/p/shcs;
#/p/shda;
#/p/shdai;
#/p/shcsh;
#/p/tjmc;
#/p/tjms;
#/p/tjys;
#/p/tjma;
#/p/tjmsd;
#/p/cqms;
#/p/cqma;
斩监候
#/p/cqmd;
#/p/cqmf;
#/p/cqmg;
#/p/hebma;
#/p/hebms;
#/p/hebmd;每日工作总结简短
#/p/jlcsa; #/p/jlcss; #/p/ccmts; #/p/ccmtd; #/p/ccmtf; #/p/ccmtg; #/p/ccmtw; #/p/symts; #/p/symtt; #/p/symty; #/p/symtz; #/p/symtx; #/p/dlmta; #/p/dlcs;
#/p/dldba; #/p/dldbs; #/p/dlcsd; #/p/asmtw; #/p/asmte; #/p/asmtr; #/p/jnmtw; #/p/jnmte; #/p/jnmtr; #/p/jnmtt; #/p/jnmta; #/p/jnmts; #/p/qdmt; #/p/qdmtq; #/p/qdmtw;
#/p/dymte; #/p/dycs; #/p/dycsa; #/p/ytmtr; #/p/ytdg; #/p/ytcs; #/p/wfcs; #/p/wfmtq; #/p/tymtq; #/p/tymtw; #/p/tycs; #/p/tycsa; #/p/tycss; #/p/xamt; #/p/sayh; #/p/xadba; #/p/xadbd; #/p/xacsa; #/p/sjzcs; #/p/sjzcsa; #/p/sjzdg; #/p/sjzsb; #/p/sjzdbs; #/p/sjzbs; #/p/tssb; #/p/tsdba; #/p/tscss; #/p/qhdcs; #/p/qhddb;
#/p/zzdba; #/p/zzcsd; #/p/zzdbs; #l
#/p/njcsa; #/p/njcss; #/p/njdb; #/p/szcsa; #/p/szcss; #/p/szcsd; #/p/szdb; #/p/szcsf;