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

时间:2010-01-16 10:38:21   来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:换位法过于简单,特别是对于数据量少的情况很容易由密文猜出明文,而替换法不失为一种行之有效的简易算法。        从各种替换法运算的特点看,异或运算最适合用于简易加解密运算,这种方法的原理是:当一个数A和另一个数B进行异或运算会生成另一个数C,如果再将C和B进行异或运算则C又会还原为A。        相对于其他...
  正文:

本文将介绍一个简单易用的加密/解密算法:使用异或(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 ?>
  
    第4行定义了解密函数myDecrypt (),输入参数$string为密文,而$key为密钥;输出为使用$key作为密钥并使用XOR解密算法产生的明文。
  
    下面,通过一个应用示例来进一步说明加密函数的功能。
  
  1 //示例
  2 $my_password="chair";
  3 echo "my_password = $my_password";
  4 $my_key="1234567890";
  5 $my_password_en=myEncrypt($my_password,$my_key);
  6 echo "my_password_en = $my_password_en";
  7 $my_password_de=myDecrypt($my_password_en,$my_key);
  8 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算法实现身份验证
来源:http://www.002pc.com/master/College/Programming/PHP/11965.html

 1/4    1 2 3 4 下一页 尾页
收藏到:

关于《PHP+MySQL应用中使用XOR运算, 加密算法》文章的评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

随机文章

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by rand() limit 10

顶出来的热门

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by diggtop desc,id desc limit 10
站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td