快速业务通道

PHP+MySQL应用中使用XOR运算加密算法

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22

 

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

 

  XOR算法原理

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

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

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

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

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

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

  XOR算法实现

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

<!–encrypy_xor:简单使用XOR运算的加密函数———————–> 
<?php 
//加密函数 
functionmyEncrypt($string,$key) 

for($i=0;$i<STRLEN($STRING);p$i++)<> 

for($j=0;$j<STRLEN($KEY);p$j++)<> 

$string[$i]=$string[$i]^$key[$j]; 


return$string; 
}

 

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

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

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

//解密函数 
functionmyDecrypt($string,$key) 

for($i=0;$i<STRLEN($STRING);p$i++)<> 

for($j=0;$j<STRLEN($KEY);p$j++)<> 

$string[$i]=$key[$j]^$string[$i]; 


return$string; 

?>

 

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

  下面,通过一个应用示例来进一步说明加密函数的功能。

//示例 
$my_password=”chair”; 
echo”my_password=$my_password”; 
$my_key=”1234567890″; 
$my_password_en=myEncrypt($my_password,$my_key); 
echo”my_password_en=$my_password_en”; 
$my_password_de=myDecrypt($my_password_en,$my_key); 
echo”my_password_de=$my_password_de”;

 

  第3行首先定义了一个明文$my_password,然后在第4行定义密钥$my_key。

  第5、6行分别调用加密函数生成密文并输出;反过来,又在第7、8行将密文解密。

  上面示例的运行结果如下。

  my_password=chair

  my_password_en=RYPXC

  my_password_de=chair

  用XOR算法实现身份验证

  上两部分分别介绍了使用XOR运算进行信息加密/解密的原理和实现,下面,将使用这一方法来对用户的登录密码进行加密。本例中,为了保护用户的密码,系统想要达到的目的如下。

  ·在用户注册

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号