PHP暗号化・復号クラスの実装コード(公開鍵含む)_PHPチュートリアル

WBOY
リリース: 2016-07-21 14:58:17
オリジナル
787 人が閲覧しました

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

注意事項:每次加密後の字符串都不一样,另外必要公钥才能解密,如果公钥不对,解密的結果及び明文是不一致的。可哀想是、この方法似不支持中文~


http://www.bkjia.com/PHPjc/363850.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/363850.html技術記事 ?php class Crypt{ // 本文来源:龙哥博客 protected $key = ; // 公開関数 keyED($txt,$encrypt_key) { $encrypt_key = md5($encrypt_key); $ctr=0; $tmp = ; for ($i=...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート