php5数字型字符串加解密代码

5年以前  |  阅读数:681 次  |  编程语言:PHP 

<?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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例