PHP 异或 算法

72 阅读1分钟
/**
     * 异或运算
     * @param $initKey string 数据库中的密钥
     * @param $key string 二维码结果
     * @return string
     */
    private function setSecretKey($initKey,$key){
        $initKeyArr = str_split($initKey);
        $newKey = '';//运算后的试验箱id
        for($j = 0;$j < strlen($key);$j++){
            $str = '';
            $tmpArr = str_split($key);
            $tmpA = str_pad(base_convert($tmpArr[$j],16,2),4,0,STR_PAD_LEFT);
            $tmpB = str_pad(base_convert($initKeyArr[$j],16,2),4,0,STR_PAD_LEFT);
            for($k=0;$k<strlen($tmpA);$k++){
                $str .=(intval($tmpA[$k]) ^ intval($tmpB[$k]));
            }
            $tmpOneKey = strtoupper(base_convert($str,2,16));
            unset($str);
            $newKey .= $tmpOneKey;
        }
        return $newKey;
    }