本文将介绍一个简单易用的加密/解密算法:运用异或(XOR)运算。本算法原理简单,旨在使读者对信息的加密/解密有一个更加直观的印象。01XOR算法原理
从加密的重点办法看,换位法过于简单,尤其是针对数据量少的状况很容易由密文猜出明文,而替换法不失为一种行之有效的简易算法。
从各样替换法运算的特点看,异或运算最适合用于简易加解密运算,这种办法的原理是:当一个数A和另一个数B进行异或运算会生成另一个数C,倘若再将C和B进行异或运算则C又会还原为A。 相针对其他的简易加密算法,XOR算法的优点如下:
(1)算法简单,针对高级语言很容易能实现。
(2)速度快,能够在任何时候、任何地区运用。 (3)对任何字符都是有效的,不像有些简易加密算法,只对西文字符有效,对中文加密后再解密没法还原为原来的字符。
02XOR算法实现
上一部分介绍了怎样运用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];
}
}
13return$string;
14}
第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运算进行信息加密/解密的原理和实现,下面,将运用这一办法来对用户的登录暗码进行加密。本例中,为了守护用户的暗码,系统想要达到的目的如下。
·在用户注册时,用户必须添写用户暗码表单。
·除用户自己之外,其他任何人都没法获取其暗码信息,
|