PHP 异或 算法

11 篇文章 0 订阅

PHP 异或 算法

/**
     * PHP字符串“异或”算法
     * param    array   key
     * @param Request $request
     * @return mixed|string|void
     */
    public function setSecretKey(Request $request){
        $keyArr = $request->input('key');
        if(!is_array($keyArr) || empty($keyArr))
            return;
        foreach ($keyArr as $v){
            if(empty($v) || (strlen($v) != 32)){
                return;
            }
        }
        if(count($keyArr) == 1)
            return $keyArr[0];
        $arrLength = count($keyArr);
        $initKey = "00000000000000000000000000000000";
        $initKeyArr = str_split($initKey);
        for($i = 0;$i < $arrLength;$i++){
            $newKey = '';
            for($j = 0;$j < strlen($keyArr[$i]);$j++){
                $str = '';
                $tmpArr = str_split($keyArr[$i]);
                $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;
            }
            unset($initKeyArr);
            $initKeyArr = str_split($newKey);
        }
        return join($initKeyArr);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JasonHome

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值