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中for循环语句的几种变型
Mar 16 PHP
用PHP+MySQL搭建聊天室功能实例代码
Aug 20 PHP
yii实现图片上传及缩略图生成的方法
Dec 04 PHP
Smarty foreach控制循环次数的一些方法
Jul 01 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
Dec 17 PHP
Yii视图CGridView实现操作按钮定义地址示例
Jul 14 PHP
Yii列表定义与使用分页方法小结(3种方法)
Jul 15 PHP
PHP微信API接口类
Aug 22 PHP
redis查看连接数及php模拟并发创建redis连接的方法
Dec 15 PHP
使用ThinkPHP生成缩略图及显示
Apr 27 PHP
PHP递归实现汉诺塔问题的方法示例
Nov 25 PHP
laravel框架创建授权策略实例分析
Nov 22 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.NET的入门教程
2006/10/09 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
php简单实现快速排序的方法
2015/04/04 PHP
浅析js封装和作用域
2013/07/09 Javascript
js单例模式详解实例
2013/11/21 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
一个php+js实时显示时间问题
2015/10/12 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
AngularJS模板加载用法详解
2016/11/04 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
JS跨域请求的问题解析
2018/12/03 Javascript
微信小程序实现动态获取元素宽高的方法分析
2018/12/10 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
CentOS下Python3的安装及创建虚拟环境的方法
2018/11/28 Python
Python正则表达式和元字符详解
2018/11/29 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
python是怎么被发明的
2020/06/15 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
应聘教师推荐信
2013/10/31 职场文书
广告设计专业自荐信范文
2013/11/14 职场文书
教学器材管理制度
2014/01/26 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
销售团队激励口号
2014/06/06 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
仓管员岗位职责
2015/02/03 职场文书
工作证明格式范文
2015/06/15 职场文书
早安问候语大全
2015/11/10 职场文书