php5数字型字符串加解密代码


Posted in PHP onApril 24, 2008

<?php
/* ----------------------------------------------------------------------------
* Script Name: encrypt.php
* Creation Date: 2008-4-7 10:36
* Last Modified: 2008-4-12 16:00
* Author: meyu
* Copyright (c) 2007
* Purpose: 数字字符串简易加解密
* ----------------------------------------------------------------------------*/

class Encryption {
    /**
     * 最终的密文代码,可设为任意不重复的10位英文字符a-zA-Z
     */
    private $replacement = 'urskydMeIV';

    /**
     * 增加的密文第一位,可设为1位除0以外的整数,即 1-9
     */
    private $prefix = "8";

    /**
     * 公钥,长度小于8位的正整数
     */
    private $match = "111111";

    /**
     * 转换后对照数组
     */
    private $replaceenc;
    private $replacedec;

    function __construct() {
        for($i =0; $i < 10; $i++) {
            $this->replaceenc['/'.$i.'/'] = $this->replacement{$i};
            $this->replacedec['/'.$this->replacement{$i}.'/'] = $i;
        }
    }

    public function encrypt($str) {
        return preg_replace(
            array_keys($this->replaceenc),
            $this->replaceenc,
            $this->mynotin(preg_replace("/(.)(.)/", "${2}${1}", $str))
        );
    }

    public function decrypt($str) {
        return preg_replace("/(.)(.)/", "${2}${1}",
            $this->mynotout(preg_replace(array_keys($this->replacedec),$this->replacedec,$str))
        );
    }

    private function mynotin($str) {
        $str_out = "";
        $i = 0;
        while(isset($str{7*$i})) {
            $str_out .= (($this->prefix.substr($str, $i*7, 7))+0)^$this->match;
            $i++;
        }
        return $str_out;
    }

    private function mynotout($str) {
        $str_out = "";
        $i = 0;
        while(isset($str{8*$i})) {
            $str_out .= substr((substr($str, $i*8, 8)+0)^$this->match, 1);
            $i++;
        }
        return $str_out;
    }
}
?>

PHP 相关文章推荐
PHP实现图片简单上传
Oct 09 PHP
用php获取远程图片并把它保存到本地的代码
Apr 07 PHP
供参考的 php 学习提高路线分享
Oct 23 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
Dec 25 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
Mar 01 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
Jun 25 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
Dec 18 PHP
PHP生成树的方法
Jul 28 PHP
PHP的关于变量和日期处理的一些面试题目整理
Aug 10 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
Sep 09 PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 PHP
php实现的简单压缩英文字符串的代码
Apr 24 #PHP
php格式化工具Beautify PHP小小BUG
Apr 24 #PHP
使用PHP的日期与时间函数技巧
Apr 24 #PHP
追求程序速度,而不是编程的速度
Apr 23 #PHP
编写漂亮的代码 - 将后台程序与前端程序分开
Apr 23 #PHP
php REMOTE_ADDR之获取访客IP的代码
Apr 22 #PHP
Gregarius中文日期格式问题解决办法
Apr 22 #PHP
You might like
通过文字传递创建的图形按钮
2006/10/09 PHP
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
laravel学习教程之存取器
2016/07/30 PHP
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
2013/07/09 Javascript
使用命令对象代替switch语句的写法示例
2015/02/28 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
2017/07/22 jQuery
JavaScript实现开关等效果
2017/09/08 Javascript
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
探究Python中isalnum()方法的使用
2015/05/18 Python
python奇偶行分开存储实现代码
2018/03/19 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
python提取xml里面的链接源码详解
2019/10/15 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
应届实习生的自我评价范文
2014/01/05 职场文书
技校毕业生自荐书
2014/05/23 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
2014年医生工作总结
2014/11/21 职场文书
股权转让协议范本
2014/12/07 职场文书
个人廉政承诺书
2015/04/28 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
Python学习开发之图形用户界面详解
2021/08/23 Python