xdeode php,一个PHP针对数字的加密解密类_php实例

代码如下:

class XDeode{

private $strbase = "Flpvf70CsakVjqgeWUPXQxSyJizmNH6B1u3b8cAEKwTd54nRtZOMDhoG2YLrI";

private $key,$length,$codelen,$codenums,$codeext;

function __construct($length = 9,$key = 2543.5415412812){

$this->key = $key;

$this->length = $length;

$this->codelen = substr($this->strbase,0,$this->length);

$this->codenums = substr($this->strbase,$this->length,10);

$this->codeext = substr($this->strbase,$this->length + 10);

}

function encode($nums){

$rtn = "";

$numslen = strlen($nums);

//密文第一位标记数字的长度

$begin = substr($this->codelen,$numslen - 1,1);

//密文的扩展位

$extlen = $this->length - $numslen - 1;

$temp = str_replace('.', '', $nums / $this->key);

$temp = substr($temp,-$extlen);

$arrextTemp = str_split($this->codeext);

$arrext = str_split($temp);

foreach ($arrext as $v) {

$rtn .= $arrextTemp[$v];

}

$arrnumsTemp = str_split($this->codenums);

$arrnums = str_split($nums);

foreach ($arrnums as $v) {

$rtn .= $arrnumsTemp[$v];

}

return $begin.$rtn;

}

function decode($code){

$begin = substr($code,0,1);

$rtn = '';

$len = strpos($this->codelen,$begin);

if($len!== false){

$len++;

$arrnums = str_split(substr($code,-$len));

foreach ($arrnums as $v) {

$rtn .= strpos($this->codenums,$v);

}

}

return $rtn;

}

}

/**** 示例 ****/

$begin = 9950;

$end = $begin + 50;

$obj = new XDeode(9);

for($i=$begin;$i $en = $obj->encode($i);

$de = $obj->decode($en);

echoln("[{$i}]=[{$en}]=[{$de}]");

}

function echoln($str){

echo "{$str}

";

}

?>

运行示例结果:

[9950]=[vmizxPPga]=[9950]

[9951]=[vSNSSPPgk]=[9951]

[9952]=[vNQNyPPgV]=[9952]

[9953]=[vyyJJPPgj]=[9953]

[9954]=[vNzQzPPgq]=[9954]

[9955]=[vyNzmPPgg]=[9955]

[9956]=[vXxSNPPge]=[9956]

[9957]=[vXJJJPPgW]=[9957]

[9958]=[vXziQPPgU]=[9958]

[9959]=[viXxSPPgP]=[9959]

[9960]=[vQxmyPPea]=[9960]

[9961]=[viJyJPPek]=[9961] 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值