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_Flame(Version:Progress)的原代码
Oct 09 PHP
聊天室php&amp;mysql(一)
Oct 09 PHP
初级的用php写的采集程序
Mar 16 PHP
PHP+Tidy-完美的XHTML纠错+过滤
Apr 10 PHP
php调用mysql数据 dbclass类
May 07 PHP
php加速器eAccelerator的配置参数、API详解
May 05 PHP
php实现统计网站在线人数的方法
May 12 PHP
PHP curl使用实例
Jul 02 PHP
php并发加锁示例
Oct 17 PHP
php求数组全排列,元素所有组合的方法总结
Mar 14 PHP
laravel 中某一字段自增、自减的例子
Oct 11 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
Dec 13 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抽象工厂模式(Elgg)
2010/03/21 PHP
php 常用类汇总 推荐收藏
2010/05/13 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
php表单处理操作
2017/11/16 PHP
mouse_on_title.js
2006/08/25 Javascript
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
网页中表单按回车就自动提交的问题的解决方案
2014/11/03 Javascript
javascript实现简单的鼠标拖动效果实例
2015/04/10 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
原生js实现图片轮播特效
2015/12/18 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
浅析Visual Studio Code断点调试Vue
2018/02/27 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
Fetch超时设置与终止请求详解
2019/05/18 Javascript
在Vue中实现随hash改变响应菜单高亮
2020/03/09 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
[01:03:50]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第二场 2月7日
2021/03/11 DOTA
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
如何通过安装HomeBrew来安装Python3
2020/12/23 Python
CSS3使用transition属性实现过渡效果
2018/04/18 HTML / CSS
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
英国森林假期:Forest Holidays
2021/01/01 全球购物
书法培训心得体会
2014/01/05 职场文书
2014迎国庆演讲稿
2014/09/19 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
开学典礼观后感
2015/06/15 职场文书
公司庆典主持词
2015/07/04 职场文书
HTML+CSS 实现顶部导航栏菜单制作
2021/06/03 HTML / CSS
react中的DOM操作实现
2021/06/30 Javascript
Docker官方工具docker-registry案例演示
2022/04/13 Servers