/**
* 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);
}
---------------------
作者:JasonHome
来源:CSDN
原文:https://blog.csdn.net/qq_29627497/article/details/82964467
版权声明:本文为博主原创文章,转载请附上博文链接!

PHP 异或 算法的更多相关文章

  1. Android数据加密之异或加密算法

    前言: 这几天被公司临时拉到去做Android IM即时通信协议实现,大致看了下他们定的协议,由于之前没有参与,据说因服务器性能限制,只达成非明文传递,具体原因我不太清楚,不过这里用的加密方式是采用异 ...

  2. Java算法之字符串反转分析

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 在基本的工作内容开发中,算法不会显得那么重要,而在百万级别的时候,差距非常大,今天带大家研究下常见的 ...

  3. STL算法

    STL算法部分主要由头文 件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<algorit ...

  4. STL中的所有算法(70个)

    STL中的所有算法(70个)----9种类型(略有修改by crazyhacking) 参考自: http://www.cppblog.com/mzty/archive/2007/03/14/1981 ...

  5. C++11 STL算法简介

    STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库.它被容纳于C++标准程序库(C++ Standard Library)中,是ANS ...

  6. C++ 11 STL算法

    STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<algorith ...

  7. STL所有算法简介 (转) http://www.cnblogs.com/yuehui/archive/2012/06/19/2554300.html

    STL所有算法简介 STL中的所有算法(70个) 参考自:http://www.cppblog.com/mzty/archive/2007/03/14/19819.htmlhttp://hi.baid ...

  8. STL中的算法

    STL中的所有算法(70个) 参考自:http://www.cppblog.com/mzty/archive/2007/03/14/19819.htmlhttp://hi.baidu.com/ding ...

  9. 初探STL之算法

    算法 STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包括头文件<algor ...

随机推荐

  1. Go中的字符串使用----strings和strconv

    Go中的字符串操作 字符串是工作中最常用的,值得我们专门的练习一下.在Go中使用strings包来操作字符串,这也是内置的包哈,不像Java中要么手写,要么引入common-lang 或者 别的第三方 ...

  2. 搞定java String校招面试题

    今天大致的阅读了String类的源码,并刷了常见的面试题,在此做个笔记. 面试题一:判断下列程序运行结果 package String_test; public class test_1 { publ ...

  3. js拖拽上传图片

    有时候,在开发中,需要遇到拖拽上传图片的需求,即从磁盘选中一张或多张图片,然后按着鼠标把图片拖动到页面上指定的区域,实现图片的上传. 1.后端上传图片的接口 我是之前用vue写一个简单的后台系统的时候 ...

  4. scapy构造打印ARP数据包

    ARP格式: 用于以太网的ARP请求/应答分组格式 各字段含义: 帧类型:表示数据部分用什么协议封装(0800表示IP,0806表示ARP,8035表示RARP). 硬件类型:表示硬件地址的类型(其中 ...

  5. testlink搭建教程

    1,下载testlink安装包   请加QQ群299524235,在群文件中下载     2.配置Apache环境和PHP环境   解压testlink文件到Apache中, 通过127.0.0.1/ ...

  6. ElasticSearch实战系列一: ElasticSearch集群+Kinaba安装教程

    前言 本文主要介绍的是ElasticSearch集群和kinaba的安装教程. ElasticSearch介绍 ElasticSearch是一个基于Lucene的搜索服务器,其实就是对Lucene进行 ...

  7. spring-boot-plus更新日志 CHANGELOG(九)

    spring-boot-plus更新日志 CHANGELOG [V1.2.0-RELEASE] 2019.08.06

  8. set集合的常用方法

    set集合是一种无序不重复的集合   add  (self, *args, **kwargs)                                                      ...

  9. Java 从入门到进阶之路(二)

    之前的文章我们介绍了一下用 IDEA 编辑器创建一个 Java 项目并输出 HelloWorld,本章我们来看一下 Java 中的变量和基本数据类型. 在这之前我们先来看一下 Java 中的关键字,这 ...

  10. c语言的图形库

    图形库链接http://www.easyx.cn/ 使用图形库头文件easyx.h或graphics.h 同样在里面下载图形库帮助文档进行查询 vs vc都可使用图形库 图形库窗口: initgrap ...