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;
}
任何帮助都将不胜感激。