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 分页原理分析,大家可以看看
Dec 21 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
Jan 11 PHP
解析PHP中intval()等int转换时的意外异常情况
Jun 21 PHP
Codeigniter操作数据库表的优化写法总结
Jun 12 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
Dec 23 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
Mar 20 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
Jul 01 PHP
JavaScript实现删除电脑的关机键
Jul 26 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 PHP
php微信开发之关注事件
Jun 14 PHP
laravel中Redis队列监听中断的分析
Sep 14 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获取指定日期是星期几的实现方法
2016/11/30 PHP
PHP设计模式之注册树模式分析
2018/01/26 PHP
PHP PDOStatement::execute讲解
2019/01/31 PHP
php无限极分类实现方法分析
2019/07/04 PHP
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
Jquery 设置标题的自动翻转
2009/10/03 Javascript
js继承的实现代码
2010/08/05 Javascript
使用jquery与图片美化checkbox和radio控件的代码(打包下载)
2010/11/11 Javascript
fastclick插件导致日期(input[type=&quot;date&quot;])控件无法被触发该如何解决
2015/11/09 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
Node.js之网络通讯模块实现浅析
2017/04/01 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
Python字符串格式化
2015/06/15 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
Python判断文件和字符串编码类型的实例
2017/12/21 Python
浅谈Python中的私有变量
2018/02/28 Python
python分治法求二维数组局部峰值方法
2018/04/03 Python
python破解zip加密文件的方法
2018/05/31 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
《老山界》教学反思
2014/04/08 职场文书
无传销社区工作方案
2014/05/13 职场文书
撤诉书怎么写
2015/05/19 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
python游戏开发Pygame框架
2022/04/22 Python