XOR (异或)加密简单实现

xiaoxiao2021-02-28  117

参考: http://www.ruanyifeng.com/blog/2017/05/xor.html?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

一、 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; }
转载请注明原文地址: https://www.6miu.com/read-37858.html

最新回复(0)