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 和 MySQL 开发的 8 个技巧
Jan 02 PHP
PHP中usort在值相同时改变原始位置问题的解决方法
Nov 27 PHP
PHP+jQuery实现自动补全功能源码
May 15 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
php比较两个绝对时间的大小
Jan 31 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
Oct 08 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
Mar 15 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
php实现解析xml并生成sql语句的方法
Feb 03 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 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 error_log 函数的使用
2009/04/13 PHP
Linux下PHP加速器APC的安装与配置笔记
2014/10/24 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
JavaScript EasyPager 分页函数
2011/05/25 Javascript
JavaScript加强之自定义callback示例
2013/09/21 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
详解vue-cli开发环境跨域问题解决方案
2017/06/06 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
2018/01/05 NodeJs
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
详解Vue内部怎样处理props选项的多种写法
2018/11/06 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
js计时事件实现圆形时钟
2020/03/25 Javascript
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
Python中Selenium模块的使用详解
2020/10/09 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
盖尔斯工厂店:GUESS Factory
2020/01/21 全球购物
super关键字的用法
2012/04/10 面试题
给护士表扬信
2014/01/19 职场文书
试用期员工考核制度
2014/01/22 职场文书
学习标兵获奖感言
2014/02/20 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
维稳工作情况汇报
2014/10/27 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
小学见习报告
2014/10/31 职场文书
父亲节活动总结
2015/02/12 职场文书
学生个人总结范文
2015/02/15 职场文书
家长高考寄语
2015/02/27 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
员工开除通知书
2015/04/25 职场文书
2015年班干部工作总结
2015/04/29 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
《抽屉原理》教学反思
2016/02/20 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python