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
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
Mar 29 PHP
服务器web工具 php环境下
Dec 29 PHP
浅析Apache中RewriteCond规则参数的详细介绍
Jun 30 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
Apr 24 PHP
PHP Curl出现403错误的解决办法
May 29 PHP
php集成环境xampp中apache无法启动问题解决方案
Nov 18 PHP
简单了解WordPress开发中update_option()函数的用法
Jan 11 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
Apr 26 PHP
PHP session 会话处理函数
Jun 06 PHP
基于PHP制作验证码
Oct 12 PHP
详解PHP PDO简单教程
May 28 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程序员工具
2008/05/26 PHP
php+mysql写的简单留言本实例代码
2008/07/25 PHP
php中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
js传值 判断
2006/10/26 Javascript
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
关于原生js中bind函数的简单实现
2016/08/10 Javascript
node中使用es5/6以及支持性与性能对比
2017/08/11 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
nodejs简单实现TCP服务器端和客户端的聊天功能示例
2018/01/04 NodeJs
纯JS实现可用于页码更换的飞页特效示例
2018/05/21 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
python爬取m3u8连接的视频
2018/02/28 Python
Python实现的堆排序算法示例
2018/04/29 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
python生成带有表格的图片实例
2019/02/03 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
pandas DataFrame行或列的删除方法的实现示例
2019/08/02 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
护理自荐信范文
2013/10/05 职场文书
学院书画协会部门职责
2013/11/28 职场文书
工艺员岗位职责
2014/02/11 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
创业女性典型材料
2014/05/02 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
教师继续教育反思周记
2015/06/25 职场文书
《富饶的西沙群岛》教学反思
2016/02/16 职场文书
anaconda python3.8安装后降级
2021/06/11 Python