只想将代码解码为纯文本


Just want to decode the code into plain text

我们想了解更多关于函数get_rnd_iv((和md5_encrypt((这些函数使用128位编码的信息。现在我们只想知道如何将该代码解码为纯文本......

这是我的所有代码行。

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);
}
?>

我们想了解更多关于函数 get_rnd_iv(( 和 md5_encrypt(( 的信息

但是你没有说你想知道什么!

有一个_encrypt()和一个_decrypt() - 有什么问题?

我不是加密分析师 - 但函数的名字非常糟糕 - md5 是一个哈希函数而不是加密函数 - 即 md5 的目的是使数据不可解密 - 当然这个对称算法正在使用 md5 函数 - 但它不仅仅实现 md5。

IV的要点是,使用相同的密钥加密相同的消息会给出不同的输出(因此使重放攻击和密钥识别更加困难(。注意,需要为加密生成 IV,并将相同的值传递给解密 fn。在您提供的代码的情况下,它被合并到输出中 - 但可以单独处理。

我可能是错的,但这里的算法看起来像是 WEP 的变体

我可能不完全理解你的问题,但就加密和解密而言,你在这里要求的代码:

$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"

似乎很明显,我不知道这是否真的是你想要的。