/* ------------------------------------- ---------------------------------------
* スクリプト名: 暗号化。 php
* 作成日: 2008-4-7 10:36
* 最終更新日: 2008-4-12 16:00
* 作成者: meyu
* Copyright (c) 2007
* 目的: 数字文字符串简易加解密
* ------------------------------------- ---------------------------------------*/
クラス暗号化{
/**
* 最終的な暗号文コードは、繰り返しのない 10 桁の英字 a-zA-Z に設定できます
*/
private $replacement = 'urskydMeIV';
/**
※追加する暗号文の先頭ビットは、0以外の1桁の整数、つまり1~9を設定可能
*/
private $prefix = "8";
/**
* 公開鍵、長さ 8 桁未満の正の整数
*/
private $match = "111111";
/**
* 変換後の配列を比較
*/
private $replaceenc;
プライベート $replacedec;
function __construct() {
for($i =0; $i <<10; $i ) {
$this->replaceenc['/'.$i.'/ '] = $this->置換{$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))
);
}
プライベート 関数 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;
}
プライベート 関数 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;
}
}
?>