class Crypt{
// 本文来源:龙哥博客
protected $key = “”; //公钥
秘密関数キーED($txt,$encrypt_key)
{
$encrypt_key = md5($encrypt_key);
$ctr=0;
$tmp = "";
for ($i=0;$i
if ($ctr==strlen($encrypt_key)){
$ctr=0;
}
$tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
$ctr++;
}
$tmp を返します。
}
public function encrypt($txt,$key=”")
{
if(empty($key)){
$key=$this->key;
}
srand((double)microtime( )*1000000);
$encrypt_key = md5(rand(0,32000));
$tmp = ""for ($i=0;$i
if ($ctr==strlen($encrypt_key)){
$ctr=0;
}
$tmp.= substr($txt,$ i,1) ^ substr($encrypt_key,$ctr,1));
$ctr++
}
return $this->keyED($tmp,$key)
}
public function decrypt($txt, $key=”")
{
if(empty($key)){
$key=$this->key;
}
$txt = $this->keyED($txt,$key);
$tmp = "";
for ($i=0;$i
$md5 = substr($txt,$i,1);
$i++;
$tmp.= (substr($txt,$i,1) ^ $md5);
}
$tmp を返します。
}
パブリック関数 setKey($key)
{
if(empty($key)){
return null;
}
$this->key=$key;
}
public function getKey()
{
return $this->key;
}
// http://www.bkjia.com によるダウンロード
}
$string = “http://www.52blogger.com”;
$crypt= 新しい Crypt();
$crypt->setKey(“http://www.52blogger.com”);
$enc_text = $crypt->encrypt($string,$crypt->getKey());
$dec_text = $crypt->decrypt($enc_text,$crypt->getKey());
echo “加密前 : $string
n”;
echo “加密後 : $enc_text
n”;
echo “解密後 : $dec_text n”;
?>
実行結果:
加密前 : http://www.52blogger.com
加密後 : hSzQ'Z* kP~ y (WpVs = 6Q3 gZbR5Qk h tZ( f= Zm
解密後: http://www.52blogger.com
注意事項:每次加密後の字符串都不一样,另外必要公钥才能解密,如果公钥不对,解密的結果及び明文是不一致的。可哀想是、この方法似不支持中文~