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 相关文章推荐
开源SNS系统-ThinkSNS
May 18 PHP
PHP随机数生成代码与使用实例分析
Apr 08 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
Sep 23 PHP
深入php list()函数的详解
Jun 05 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
Jun 26 PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 PHP
ThinkPHP关于session的操作方法汇总
Jul 18 PHP
QQ互联一键登录审核不通过的解决方案
Sep 10 PHP
php判断数组中是否存在指定键(key)的方法
Mar 17 PHP
php输出全球各个时区列表的方法
Mar 31 PHP
typecho插件编写教程(三):保存配置
May 28 PHP
thinkPHP模板算术运算相关函数用法分析
Jul 12 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中防止伪造跨站请求的小招式
2011/09/02 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
js 省地市级联选择
2010/02/07 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
jQuery EasyUI API 中文文档 - EasyLoader 加载器
2011/09/29 Javascript
js中根据字数截取字符串,不能截断url
2012/01/12 Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
2012/02/27 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
详谈$.data()的用法和作用
2017/02/13 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
2017/04/14 jQuery
jQuery基于Ajax实现读取XML数据功能示例
2018/05/31 jQuery
微信小程序之自定义组件的实现代码(附源码)
2018/08/02 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
2018/10/08 Javascript
vue轻量级框架无法获取到vue对象解决方法
2019/05/12 Javascript
微信小程序中target和currentTarget的区别小结
2020/11/06 Javascript
Python过滤函数filter()使用自定义函数过滤序列实例
2014/08/26 Python
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
Python对列表排序的方法实例分析
2015/05/16 Python
详解Python3中的Sequence type的使用
2015/08/01 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
高中课前三分钟演讲稿
2014/09/13 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
安全生产工作汇报
2014/10/28 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
班主任先进事迹材料
2014/12/17 职场文书
项目建议书
2015/02/04 职场文书
歌咏比赛口号大全
2015/12/25 职场文书
年终工作总结范文
2019/06/20 职场文书
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android
Django框架之路由用法
2022/06/10 Python