【问题标题】:encode by php and decode by jsphp编码,js解码
【发布时间】:2010-07-07 22:06:07
【问题描述】:

由于我们国家的 gfw(防火墙),我必须在 http 传输中编码内容(https 更好,但它是第二选择)。

我的方法是通过 php 使用 base64 编码并通过 js 解码,然后在 iframe 中显示。但是FF有问题。

有没有更好的方法在浏览器中显示 base64 编码的字符串,或者其他编码/解码的方法?

【问题讨论】:

  • 你能显示你正在使用的代码吗?
  • 另外,我不完全确定这里的基本前提:如果防火墙无法检测和解码 base64 编码的内容,那将是一团糟——可悲的是,据我所知,它不是 :) 你到底要转移到哪里?什么时候过滤?
  • gfw 是中间人,它会搜索你使用http传输的内容。所以我想在服务器中编码,在浏览器中解码。为了节省时间,我终于用https解决了这个问题,感谢您的评论

标签: php javascript encode


【解决方案1】:
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);
    }

【讨论】:

  • 我真的希望这些函数被贴错标签,因为 MD5 不加密,也不可逆,因为它是一个哈希函数。
  • true 它们是一个哈希函数...我正在使用它们来编码我传入的值...然后进行 base64 编码。当然也可以反向解密它们。为了掩盖数据。
【解决方案2】:

您可以设置页面正文的 innerHTML 属性...

只要 JS 生成的编码字符串是整个正文的有效 HTML,它应该可以正常工作,然后您不必对 iframe 或其他任何东西做任何混乱。

【讨论】:

    猜你喜欢
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多