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 相关文章推荐
example2.php
Oct 09 PHP
十天学会php之第九天
Oct 09 PHP
PHP技术开发技巧分享
Mar 23 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 PHP
php调整gif动画图片尺寸示例代码分享
Dec 05 PHP
php使用qr生成二维码的示例分享
Jan 20 PHP
php中ftp_chdir与ftp_cdup函数用法
Nov 18 PHP
完美解决thinkphp验证码出错无法显示的方法
Dec 09 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 PHP
php绘制一个矩形的方法
Jan 24 PHP
php实现插入数组但不影响原有顺序的方法
Mar 27 PHP
理清PHP在Linxu下执行时的文件权限方法
Jun 07 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
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
php防止伪造数据从地址栏URL提交的方法
2014/08/24 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
JSQL 基于客户端的成绩统计实现方法
2010/05/05 Javascript
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
jQuery实现冻结表格行和列
2015/04/29 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
BootStrap网页中代码显示用法详解
2016/10/21 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
Vue.js render方法使用详解
2017/04/05 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
Python中的random()方法的使用介绍
2015/05/15 Python
python实现数组插入新元素的方法
2015/05/22 Python
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
2019/09/16 Python
parser.add_argument中的action使用
2020/04/20 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
一道SQL存储过程面试题
2016/10/07 面试题
大学生自我鉴定范文模板
2014/01/21 职场文书
学术会议邀请函范文
2014/01/22 职场文书
房地产项目策划书
2014/02/05 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
个人借条范本
2015/05/25 职场文书
党小组推荐意见
2015/06/02 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
Android中的Launch Mode详情
2022/06/05 Java/Android