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函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
ThinkPHP CURD方法之limit方法详解
Jun 18 PHP
PHP中__FILE__、dirname与basename用法实例分析
Dec 01 PHP
CentOS下PHP安装Oracle扩展
Feb 15 PHP
php访问数组最后一个元素的函数end()用法
Mar 18 PHP
微信公众平台开发之配置与请求
Aug 26 PHP
WordPress中获取指定分类及其子分类下的文章数目
Dec 31 PHP
php生成txt文件实例代码介绍
Apr 28 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
Sep 11 PHP
PHP下载远程图片的几种方法总结
Apr 07 PHP
php进行md5加密简单实例方法
Sep 19 PHP
PHP实现简单注册登录系统
Dec 28 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中MD5函数使用实例代码
2008/06/07 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
2012/01/13 Javascript
javascript 3d 逐侦产品展示(核心精简)
2014/03/26 Javascript
浅谈Javascript中深复制
2014/12/01 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
vue.js选中动态绑定的radio的指定项
2017/06/02 Javascript
详解angular 中的自定义指令之详解API
2017/06/20 Javascript
vue组件name的作用小结
2018/05/23 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
Python函数返回不定数量的值方法
2019/01/22 Python
python print出共轭复数的方法详解
2019/06/25 Python
python每天定时运行某程序代码
2019/08/16 Python
Python chardet库识别编码原理解析
2020/02/18 Python
在django中使用post方法时,需要增加csrftoken的例子
2020/03/13 Python
python实现邮件循环自动发件功能
2020/09/11 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
2013/01/06 HTML / CSS
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
师生聚会感言
2014/01/26 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
道歉的话怎么说
2015/05/12 职场文书
联村联户简报
2015/07/21 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书
年中了,该如何写好个人述职报告?
2019/07/02 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL
vue中data里面的数据相互使用方式
2022/06/05 Vue.js