PHP实现的ID混淆算法类与用法示例


Posted in PHP onAugust 10, 2018

本文实例讲述了PHP实现的ID混淆算法类与用法。分享给大家供大家参考,具体如下:

<?php
/**
 * ID混淆算法
 */
class IdCrypt
{
  /**
   * 对整数id进行可逆混淆
   */
  public static function encodeId($id)
  {
    $sid = ($id & 0xff000000);
    $sid += ($id & 0x0000ff00) << 8;
    $sid += ($id & 0x00ff0000) >> 8;
    $sid += ($id & 0x0000000f) << 4;
    $sid += ($id & 0x000000f0) >> 4;
    $sid ^= 11184810;
    return $sid;
  }
  /**
   * 对通过encodeId混淆的id进行还原
   */
  public static function decodeId($sid)
  {
    if (!is_numeric($sid)) {
      return false;
    }
    $sid ^= 11184810;
    $id = ($sid & 0xff000000);
    $id += ($sid & 0x00ff0000) >> 8;
    $id += ($sid & 0x0000ff00) << 8;
    $id += ($sid & 0x000000f0) >> 4;
    $id += ($sid & 0x0000000f) << 4;
    return $id;
  }
}
$idstr = new IdCrypt();
echo $encodeid = $idstr->encodeId('12345678');
echo "<br/>";
echo $decodeid = $idstr->decodeId($encodeid);
?>

运行结果:

13309518
12345678

PHP 相关文章推荐
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
PHP设计模式之解释器模式的深入解析
Jun 13 PHP
解析php中memcache的应用
Jun 18 PHP
PHP操作MongoDB GridFS 存储文件的详解
Jun 20 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
PHP中4个加速、缓存扩展的区别和选用建议
Mar 12 PHP
PHP实现单例模式最安全的做法
Jun 13 PHP
CI框架中类的自动加载问题分析
Nov 21 PHP
PHP与SQL语句常用大全
Dec 10 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
Oct 14 PHP
php ZipArchive实现多文件打包下载实例
Oct 31 PHP
PHP+ajax实现二级联动菜单功能示例
Aug 10 #PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 #PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 #PHP
PHP检查端口是否可以被绑定的方法示例
Aug 09 #PHP
php对象工厂类完整示例
Aug 09 #PHP
php闭包中使用use声明变量的作用域实例分析
Aug 09 #PHP
php生成二维码不保存服务器还有下载功能的实现代码
Aug 09 #PHP
You might like
PHP新手上路(八)
2006/10/09 PHP
php实现建立多层级目录的方法
2014/07/19 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
Vue 中使用lodash对事件进行防抖和节流操作
2020/07/26 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
[02:55]2018DOTA2国际邀请赛勇士令状不朽珍藏Ⅲ饰品一览
2018/08/01 DOTA
python发送HTTP请求的方法小结
2015/07/08 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
python如何快速拼接字符串
2020/10/28 Python
纯css3实现思维导图样式示例
2018/11/01 HTML / CSS
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
Oracle快照(snapshot)
2015/03/13 面试题
优秀员工个人的自我评价
2013/11/29 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
胡桃夹子观后感
2015/06/11 职场文书
Python使用scapy模块发包收包
2021/05/07 Python