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绘图技术
Jul 03 PHP
php检测iis环境是否支持htaccess的方法
Feb 18 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
Jun 22 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
Aug 21 PHP
php格式化金额函数分享
Feb 02 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
PHP的Yii框架的基本使用示例
Aug 21 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
Feb 06 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
May 05 PHP
laravel 操作数据库常用函数的返回值方法
Oct 11 PHP
laravel 自定义常量的两种方案
Oct 14 PHP
Yii框架where查询用法实例分析
Oct 22 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数组编码转换示例详解
2014/03/11 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
使用jscript实现二进制读写脚本代码
2008/06/09 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
微信小程序之批量上传并压缩图片的实例代码
2018/07/05 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
Vue管理系统前端之组件拆分封装详解
2020/08/23 Javascript
Python实现的异步代理爬虫及代理池
2017/03/17 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
2018/10/14 Python
python使用正则筛选信用卡
2019/01/27 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
python装饰器使用实例详解
2019/12/14 Python
Python实现桌面翻译工具【新手必学】
2020/02/12 Python
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
美国在线购买空气净化器、除湿器、加湿器网站:AllergyBuyersClub
2021/03/16 全球购物
美国沃尔玛网上超市:Walmart
2020/08/14 全球购物
ASP.NET中的身份验证有那些
2012/07/13 面试题
出国留学经济担保书
2014/04/01 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
Django项目如何获得SSL证书与配置HTTPS
2021/04/30 Python
spring cloud eureka 服务启动失败的原因分析及解决方法
2022/03/17 Java/Android