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下利用curl判断远程文件是否存在的实现代码
Oct 08 PHP
php添加文章时生成静态HTML文章的实现代码
Feb 17 PHP
php 地区分类排序算法
Jul 01 PHP
php打开远程文件的方法和风险及解决方法
Nov 12 PHP
php检测数组长度函数sizeof与count用法
Nov 17 PHP
PHP对象实例化单例方法
Jan 19 PHP
PHP连接MySQL进行增、删、改、查操作
Feb 19 PHP
PHP实现Unicode编码相互转换的方法示例
Nov 17 PHP
PHP新特性详解之命名空间、性状与生成器
Jul 18 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
Sep 11 PHP
PHP 实现base64编码文件上传出现问题详解
Sep 01 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
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
php pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
php绘制一个扇形的方法
2015/01/24 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
Javascript中的高阶函数介绍
2015/03/15 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
2016/07/01 Javascript
AngularJS中$watch和$timeout的使用示例
2016/09/20 Javascript
利用Node.js对文件进行重命名
2017/03/12 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
获取url中用&amp;隔开的参数实例(分享)
2017/05/28 Javascript
JavaScript事件处理程序详解
2017/09/19 Javascript
原生javascript制作的拼图游戏实现方法详解
2020/02/23 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
电气技术员岗位职责
2013/11/19 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
方法汇总:Python 安装第三方库常用
2022/04/26 Python