/* ----------------------------------------------------- -----------------------------------
* スクリプト名: encrypt.php
* 作成日: 2008- 4-7 10:36
* 最終更新日: 2008-4-12 16:00
* 作成者: meyu
* 著作権 (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 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- > 一致;
$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;
}
}
?>