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
一个php作的文本留言本的例子(六)
Oct 09 PHP
我的论坛源代码(四)
Oct 09 PHP
用PHP和ACCESS写聊天室(七)
Oct 09 PHP
php 用sock技术发送邮件的函数
Jul 21 PHP
解析php中array_merge与array+array的区别
Jun 21 PHP
解析PHP中empty is_null和isset的测试
Jun 29 PHP
php文件缓存类汇总
Nov 21 PHP
PHP检查URL包含特定字符串实例方法
Feb 11 PHP
浅析PHP7 的垃圾回收机制
Sep 06 PHP
php实例化一个类的具体方法
Sep 19 PHP
一文搞懂PHP中的抽象类和接口
May 25 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
新浪新闻小偷
2006/10/09 PHP
简单的用PHP编写的导航条程序
2006/10/09 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
PHP调试函数和日志记录函数分享
2015/01/31 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
php 基础函数
2017/02/10 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
用javascript实现的支持lrc歌词的播放器
2007/05/17 Javascript
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
2013/02/01 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
Bootstrap笔记之缩略图、警告框实例详解
2017/03/09 Javascript
jQuery EasyUI tree增加搜索功能的实现方法
2017/04/27 jQuery
js 显示日期时间的实例(时间过一秒加1)
2017/10/25 Javascript
Router解决跨模块下的页面跳转示例
2018/01/11 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
Python 返回汉字的汉语拼音
2009/02/27 Python
python保存文件方法小结
2018/07/27 Python
django之自定义软删除Model的方法
2019/08/14 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
2020/12/09 Python
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
物流仓管员岗位职责
2013/12/04 职场文书
中学生操行评语大全
2014/04/24 职场文书
荆州古城导游词
2015/02/06 职场文书
萤火虫之墓观后感
2015/06/05 职场文书
党纪处分决定书
2015/06/24 职场文书
党风廉政建设心得体会
2019/05/21 职场文书
手把手教你实现PyTorch的MNIST数据集
2021/06/28 Python
详细聊聊vue中组件的props属性
2021/11/02 Vue.js