1

Base64 加密 (SMX) - 解密 (PHP)

我一直在尝试解密 PHP 中的一个字符串,该字符串最初是用一种称为SMX(服务器宏扩展)的语言进行加密和解码的。我已经尝试了很多方法来解决这个问题,但似乎都没有奏效。我已经尝试了 mcrypt_decrypt() 的各种配置以及我在网上找到的其他功能。SMX 中的加密默认使用带有 DES 的 Base64(我认为)。我已经到了我实际上正在研究Google SVN上的 SMX 源代码的地方,并且我已经通过电子邮件向项目监督者发送了电子邮件。

下面是我在 SMX 中的代码示例,它对字符串进行加密然后正确编码......

%gset(string_var,%encode(%encrypt(%string%,passkey)))

然后下面是我迄今为止在PHP中尝试过的代码......

$string = $_GET["string"];
$decoded_string = base64_decode($string);
//$decrypt_string = decrypt($string, "passkey");
$decrypt_string = decrypt2($string, "passkey");

function decrypt($string, $key)
{
  $result = '';
  $string = base64_decode($string);

  for($i=0; $i<strlen($string); $i++) {
    $char = substr($string, $i, 1);
    $keychar = substr($key, ($i % strlen($key))-1, 1);
    $char = chr(ord($char)-ord($keychar));
    $result.=$char;
  }

  return $result;
}

function decrypt2($sStr, $sKey)
{
    $decrypted= mcrypt_decrypt(
        MCRYPT_DES,
        $sKey,
        base64_decode($sStr),
        MCRYPT_MODE_ECBs
    );
        echo " decrypted = " . $decrypted;
echo "<br><br>";
    $dec_s = strlen($decrypted);
    echo " dec_s = " . $dec_s;
echo "<br><br>";
    $padding = ord($decrypted[$dec_s-1]);
    echo " padding = " . $padding;
echo "<br><br>";
    $decrypted = substr($decrypted, 0, -$padding);
    echo " decrypted = " . $decrypted;
echo "<br><br>";
    return $decrypted;
}

任何帮助都将不胜感激。

4

0 回答 0