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 error_log 函数的使用
Apr 13 PHP
Memcache 在PHP中的使用技巧
Feb 08 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
May 16 PHP
php数组删除元素示例
Mar 21 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
May 09 PHP
PHP实现删除字符串中任何字符的函数
Aug 11 PHP
四个PHP非常实用的功能
Sep 29 PHP
PHP编写简单的App接口
Aug 28 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
May 20 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 PHP
PHP实现生成模糊图片的方法示例
Dec 21 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
Oct 10 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 高效率写法 推荐
2010/02/21 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
JavaScript的Function详细
2006/11/14 Javascript
Javascript与flash交互通信基础教程
2008/08/07 Javascript
DWR Ext 加载数据
2009/03/22 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
JS两种类型的表单提交方法实例分析
2016/11/28 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
详谈js模块化规范
2017/07/07 Javascript
vue结合axios与后端进行ajax交互的方法
2018/07/06 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
python交互式图形编程实例(三)
2017/11/17 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
Python字符串内置函数功能与用法总结
2019/04/16 Python
使用python来调用CAN通讯的DLL实现方法
2019/07/03 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
小学体育教学反思
2014/01/31 职场文书
交通事故赔偿协议书
2014/04/15 职场文书
岗位安全生产责任书
2014/07/28 职场文书
电影复兴之路观后感
2015/06/02 职场文书
详解Vue3使用axios的配置教程
2022/04/29 Vue.js
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python