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读取IMAP邮件
Oct 09 PHP
也谈截取首页新闻 - 范例
Oct 09 PHP
PHPMYADMIN 简明安装教程 推荐
Mar 07 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
Jul 18 PHP
在wamp集成环境下升级php版本(实现方法)
Jul 01 PHP
PHP调用Linux命令权限不足问题解决方法
Feb 07 PHP
php统计数组元素个数的方法
Jul 02 PHP
Yii中CGridView禁止列排序的设置方法
Jul 12 PHP
php json中文编码为null的解决办法
Dec 14 PHP
PHP实现转盘抽奖算法分享
Apr 15 PHP
分析php://output和php://stdout的区别
May 06 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+XML 制作简单的留言本 图文教程
2009/11/02 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
destoon找回管理员密码的方法
2014/06/21 PHP
php递归json类实例
2014/12/02 PHP
php检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
yii2中添加验证码的实现方法
2016/01/09 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
2016/03/01 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
2011/04/27 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
jQuery实现背景滑动菜单
2016/12/02 Javascript
JavaScript ES6中export、import与export default的用法和区别
2017/03/14 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
[01:45]DOTA2新英雄“神谕者”全方位展示
2014/11/21 DOTA
简单介绍Python中的decode()方法的使用
2015/05/18 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
对python 中class与变量的使用方法详解
2019/06/26 Python
python统计文章中单词出现次数实例
2020/02/27 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
python实现梯度下降算法的实例详解
2020/08/17 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
利用简洁的图片预加载组件提升html5移动页面的用户体验
2016/03/11 HTML / CSS
伊芙丽官方旗舰店:中国淑女一线品牌
2017/12/01 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
领班岗位职责范文
2014/02/06 职场文书
毕业留言寄语大全
2014/04/10 职场文书
安康杯竞赛活动总结
2014/05/05 职场文书
社区戒毒工作方案
2014/06/04 职场文书