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分页函数
Jul 08 PHP
用PHP发电子邮件
Oct 09 PHP
smtp邮件发送一例
Oct 09 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
Jul 01 PHP
浅析php与数据库代码开发规范
Aug 08 PHP
ThinkPHP中的系统常量和预定义常量集合
Jul 01 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
Aug 21 PHP
PHP里8个鲜为人知的安全函数分析
Dec 09 PHP
php调用KyotoTycoon简单实例
Apr 02 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
PHP5.6读写excel表格文件操作示例
Feb 26 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 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
漫威DC即将合作联动,而双方早已经秘密开始
2020/04/09 欧美动漫
五个PHP程序员工具
2008/05/26 PHP
将FCKeditor导入PHP+SMARTY的实现方法
2015/01/15 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
详解PHP归并排序的实现
2016/10/18 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
2013/11/06 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
JavaScript实现的数字与字符串转换功能示例
2017/08/23 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
angular6 填坑之sdk的方法
2018/12/27 Javascript
原生js实现购物车功能
2020/09/23 Javascript
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
python读取文件名称生成list的方法
2018/04/27 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
路政管理专业个人自荐信范文
2013/11/30 职场文书
法学专业本科生自荐信范文
2013/12/17 职场文书
优胜劣汰,强者为王——读《鲁滨逊漂流记》有感
2019/08/15 职场文书
python实现网络五子棋
2021/04/11 Python
关于vue中如何监听数组变化
2021/04/28 Vue.js
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技
Oracle中DBLink的详细介绍
2022/04/29 Oracle