Try Something this:
function get_rnd_iv($iv_len)
{
$iv = '';
while ($iv_len-- > 0) {
$iv .= chr(mt_rand() & 0xff);
}
return $iv;
}
function md5_encrypt($string_value, $salt_key, $iv_len = 16)
{
$string_value .= "\x13";
$n = strlen($string_value);
if ($n % 16) $string_value .= str_repeat("\0", 16 - ($n % 16));
$i = 0;
$enc_text = get_rnd_iv($iv_len);
$iv = substr($salt_key^$enc_text, 0, 512);
while ($i < $n) {
$block = substr($string_value, $i, 8)^pack('H*', md5($iv));
$enc_text .= $block;
$iv = substr($block . $iv, 0, 512)^$salt_key;
$i += 16;
}
return urlencode(base64_encode($enc_text));
}
function md5_decrypt($enc_text, $salt_key, $iv_len = 16)
{
$enc_text = urldecode(base64_decode($enc_text));
$n = strlen($enc_text);
$i = $iv_len;
$string_value = '';
$iv = substr($salt_key^substr($enc_text, 0, $iv_len), 0, 512);
while ($i < $n) {
$block = substr($enc_text, $i, 8);
$string_value .= $block^pack('H*', md5($iv));
$iv = substr($block . $iv, 0, 512)^$salt_key;
$i += 16;
}
return preg_replace('/\\x13\\x00*$/', '', $string_value);
}
Pouvez-vous montrer le code que vous utilisez? –
Aussi, je ne suis pas tout à fait sûr de la prémisse de base ici: Si le grand pare-feu n'étaient pas en mesure de détecter et base64 décoder le contenu codé, il serait tout à fait un morceau de merde - et que, malheureusement, ce n'est pas, de ce J'entends :) Où exactement transférez-vous où? À quel moment les choses sont-elles filtrées? –
gfw est l'homme au milieu, il va chercher le contenu que vous transférez utiliser http. donc je veux encoder dans le serveur, et décoder dans le navigateur. pour gagner du temps, je enfin utiliser https résoudre ce problème, merci pour votre commentaire – limboy