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 相关文章推荐
ASP知识讲座四
Oct 09 PHP
PHP自动更新新闻DIY
Oct 09 PHP
phpmailer发送gmail邮件实例详解
Jun 24 PHP
php实现水仙花数的4个示例分享
Apr 08 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
Jun 17 PHP
php使用ereg验证文件上传的方法
Dec 16 PHP
php内嵌函数用法实例
Mar 20 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
php中让人头疼的浮点数运算分析
Oct 10 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 26 PHP
php判断目录存在的简单方法
Sep 26 PHP
PHP中SESSION过期设置
Mar 09 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/js获取客户端mac地址的实现代码
2013/07/08 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
javascript基础知识大集锦(一) 推荐收藏
2011/01/13 Javascript
jquery cookie的用法总结
2013/11/18 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
vue自动化路由的实现代码
2019/09/30 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
Python 用户登录验证的小例子
2013/03/06 Python
python操作ie登陆土豆网的方法
2015/05/09 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
Python将多个excel文件合并为一个文件
2018/01/03 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
英文版网络工程师求职信
2013/10/28 职场文书
前台文员岗位职责
2013/12/28 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
Python中else的三种使用场景
2021/06/16 Python
javascript实现计算器功能详解流程
2021/11/01 Javascript