XOR (异或)加密简单实现

参考: 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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值