一、 XOR 运算
逻辑运算之中,除了 AND 和 OR,还有一种 XOR 运算,中文称为”异或运算”。
它的定义是:两个值相同时,返回false,否则返回true。也就是说,XOR可以用来判断两个值是否不同。
true XOR true // false
false XOR false // false
true XOR false // true
false XOR true // true
上面代码中,如果两个二进制位相同,就返回0,表示false;否则返回1,表示true。
二、 XOR 的应用
XOR 运算有一个很奇妙的特点:如果对一个值连续做两次 XOR,会返回这个值本身。
// 第一次 XOR
1010 ^ 1111 // 0101
// 第二次 XOR
0101 ^ 1111 // 1010
二、 XOR 加密例子
public function test() {
$key = 'D89475D32EA8BBE933DBD299599EEUIEUUWBBA3E';
$pwd = 'test111';
$enc_str = $this->get_xor($pwd, $key);
echo '加密后:'. $enc_str.'<br>';
echo '解密后:'. $this->get_xor($enc_str, $key);
}
public function get_xor($str = '', $key = '') {
$return_str = '';
$len = strlen($str);
for($i = 0; $i < $len; $i++) {
$return_str .= $str[$i] ^ substr($key, $i, 1);
}
return $return_str;
}