热门关键字: php net javascript java
Just Internet && Only Internet
您的位置:php > PHP中使用XOR运算加密算法
PHP中使用XOR运算加密算法
发布时间:2017-07-02 14:06:25


本文将介绍一个简单易用的加密/解密算法:使用异或(XOR)运算。本算法原理简单,旨在使读者对信息的加密/解密有一个更加直观的印象。

XOR算法原理

从加密的主要方法看,换位法过于简单,特别是对于数据量少的情况很容易由密文猜出明文,而替换法不失为一种行之有效的简易算法。

从各种替换法运算的特点看,异或运算最适合用于简易加解密运算,这种方法的原理是:当一个数A和另一个数B进行异或运算会生成另一个数C,如果再将C和B进行异或运算则C又会还原为A。

相对于其他的简易加密算法,XOR算法的优点如下。

(1)算法简单,对于高级语言很容易能实现。

(2)速度快,可以在任何时候、任何地方使用。

(3)对任何字符都是有效的,不像有些简易加密算法,只对西文字符有效,对中文加密后再解密无法还原为原来的字符。

XOR算法实现

上一部分介绍了如何使用XOR运算进行加密/解密的原理,本节将使用其加密用户的登录信息。根据上一小节介绍的XOR加密算法的原理,不难写出以下的加密解密函数。首先列出加密算法。

1 <!--encrypy_xor:简单使用XOR运算的加密函数----------------------->
2 <?php
3 //加密函数
4 function myEncrypt($string, $key)
5 {
6 for($i=0; $i<STRLEN($STRING); p $i++)<>
7 {
8 for($j=0; $j<STRLEN($KEY); p $j++)<>
9 {
10 $string[$i] = $string[$i]^$key[$j];
11 }
12 }
13 return $string;
14 }

  第4行定义了加密函数myEncrypt(),输入参数$string为明文,而$key为密钥;输出为使用$key作为密钥并使用XOR加密算法产生的密文。

第6~12行的外层for循环对明文字符串的每一个字符进行循环,而内层的for循环(第8~11行)对明文的每一字符循环与密钥的每一位做异或运算。其原理已经在上一小节中介绍,不再重述。

同样,与加密函数类似,可以写出下面的解密函数。

1 //解密函数
2 function myDecrypt($string, $key)
3 {
4 for($i=0; $i<STRLEN($STRING); p $i++)<>
5 {
6 for($j=0; $j<STRLEN($KEY); p $j++)<>
7 {
8 $string[$i] = $key[$j]^$string[$i];
9 }
10 }
11 return $string;
12 }
13 ?>

登录 评论文章
声明:本站部分内容来自网络,如您发现本站内容侵害到您的利益,请联系本站管理员处理。