2011-06-28 2 views
0

128ビットエンコーディングを使用するための関数get_rnd_iv()とmd5_encrypt()について詳しく知りたいと思います。今ここに私たちは、プレーンテキストにそのコードをデコードする方法を知りたい...ここコードをプレーンテキストにデコードしたいだけです

は私のすべてのコード行..です

function get_rnd_iv($iv_len) 
{ 
    $iv = ''; 
    while ($iv_len-- > 0) { 
     $iv .= chr(mt_rand() & 0xff); 
    } 
    return $iv; 
} 

function md5_encrypt($plain_text, $password, $iv_len = 16) 
{ 
    $plain_text .= "\x13"; 
    $n = strlen($plain_text); 
    if ($n % 16) $plain_text .= str_repeat("\0", 16 - ($n % 16)); 
    $i = 0; 
    $enc_text = get_rnd_iv($iv_len); 
    $iv = substr($password^$enc_text, 0, 512); 
    while ($i < $n) { 
     $block = substr($plain_text, $i, 16)^pack('H*', md5($iv)); 
     $enc_text .= $block; 
     $iv = substr($block . $iv, 0, 512)^$password; 
     $i += 16; 
    } 
    return base64_encode($enc_text); 
} 

function md5_decrypt($enc_text, $password, $iv_len = 16) 
{ 
    $enc_text = base64_decode($enc_text); 
    $n = strlen($enc_text); 
    $i = $iv_len; 
    $plain_text = ''; 
    $iv = substr($password^substr($enc_text, 0, $iv_len), 0, 512); 
    while ($i < $n) { 
     $block = substr($enc_text, $i, 16); 
     $plain_text .= $block^pack('H*', md5($iv)); 
     $iv = substr($block . $iv, 0, 512)^$password; 
     $i += 16; 
    } 
    return preg_replace('/\\x13\\x00*$/', '', $plain_text); 
} 
?> 
+0

上の変化のように見えますか? – hakre

+6

今後の読者には:**これらの機能は使用しないでください**。彼らは*暗号の観点からは全くぞっとしていて、完全に安全ではありません。 – duskwuff

答えて

4
我々は、関数get_rnd_iv()とmd5_encrypt()についての詳細を知りたい

しかし、あなたはそれはあなたが知りたいことは何か言っていません!

_encrypt()_decrypt()があります。何が問題なのですか?

私は秘密鍵がありませんが、関数の名前は非常に悪いです - md5は暗号化関数ではないハッシュ関数です - つまり、md5のポイントはデータを解読不能にすることです - 確かにこの対称アルゴリズムはmd5しかし、md5だけを実装するわけではありません。

IVのポイントは、同じメッセージで同じメッセージを暗号化すると出力が異なるため、再生攻撃と鍵の識別が難しくなります。 NBは暗号化のために生成される必要があり、同じ値が復号化fnに渡される。あなたが提供したコードの場合、それは出力に組み込まれていますが、別々に扱うことができます。

は私が間違っているかもしれないが、ここでのアルゴリズムは、なぜあなたはちょうどそれを行うための機能を使用していないWEP

2

私は完全に限り暗号化するなどあなたの質問を理解しますが、ない場合があります

$plain_text = 'Hello World'; 
$password = 'bb98x! jKl\'5#}'; 
$enc_text = md5_encrypt($plain_text, $password); 
$text = md5_decrypt($enc_text, $password); 
var_dump($plain_text, $enc_text, $text); 

出力:

string(11) "Hello World" 
string(44) "52tXWp087mLYL/Rd1z8Bbb8sQbE+pp2+tlY95UCmkqc=" 
string(11) "Hello World" 

と復号化は、あなたがそのコードとここをお願いするものですこれは本当にあなたが求めているものならば、私が夢中になっていることは明らかです。

関連する問題