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

2018-09-21 21:41

阅读:581

  

<?php
/*----------------------------------------------------------------------------
*ScriptName:encrypt.php
*CreationDate:2008-4-710:36
*LastModified:2008-4-1216:00
*Author:meyu
*Copyright(c)2007
*Purpose:数字字符串简易加解密
*----------------------------------------------------------------------------*/

classEncryption{
/**
*最终的密文代码,可设为任意不重复的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;
}
}

publicfunctionencrypt($str){
returnpreg_replace(
array_keys($this->replaceenc),
$this->replaceenc,
$this->mynotin(preg_replace(/(.)(.)/,${2}${1},$str))
);
}

publicfunctiondecrypt($str){
returnpreg_replace(/(.)(.)/,${2}${1},
$this->mynotout(preg_replace(array_keys($this->replacedec),$this->replacedec,$str))
);
}

privatefunctionmynotin($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;
}

privatefunctionmynotout($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;
}
}
?>


评论


亲,登录后才可以留言!