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 内存缓存加速功能memcached安装与用法
Sep 03 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
Jul 05 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
Sep 10 PHP
php中strtotime函数用法详解
Nov 15 PHP
DOM基础及php读取xml内容操作的方法
Jan 23 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
Jul 04 PHP
php实现统计目录文件大小的函数
Dec 25 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
Aug 17 PHP
Laravel日志用法详解
Oct 09 PHP
php之可变函数的实例详解
Sep 13 PHP
PHP合并两个或多个数组的方法
Jan 20 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
May 05 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
php str_pad 函数使用详解
2009/01/13 PHP
PHP中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
2016/03/10 PHP
PHP 实现链式操作
2021/03/09 PHP
javascript 兼容鼠标滚轮事件
2009/04/07 Javascript
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
jQuery实现自定义事件的方法
2015/04/17 Javascript
有关Promises异步问题详解
2015/11/13 Javascript
基于JavaScript实现瀑布流布局(二)
2016/01/26 Javascript
利用JS生成博文目录及CSS定制博客
2016/02/10 Javascript
微信开发 消息推送实现代码
2016/10/21 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
vue实现防抖的实例代码
2021/01/11 Vue.js
跟老齐学Python之集合的关系
2014/09/24 Python
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
Django--权限Permissions的例子
2019/08/28 Python
python遍历路径破解表单的示例
2020/11/21 Python
关于box-sizing的全面理解
2016/07/28 HTML / CSS
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
代办委托书怎么写
2014/08/01 职场文书
感恩主题班会教案
2015/08/12 职场文书