【问题标题】:php mcrypt and different serversphp mcrypt 和不同的服务器
【发布时间】:2011-07-22 06:55:30
【问题描述】:

我有这样的代码

function EnDeCrypt($text, $key, $s = 1){
        $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);
        switch ($s) {
            case '0':
                return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($text), MCRYPT_MODE_ECB, $iv));
                break;
            case '1':
                return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv));
                break;
            default:
                return FALSE;
                break;
        }
    }

如果我在一个脚本中调用 EnDeCrypt,一切正常,如果我尝试在获取参数中将加密数据传递到不同的服务器 - 我无法解密(获取这样的字符串 ŸTe³qëêyÀÝ)

key 等于,结果 put throw urlencode\urldecode-don't decrypt

尝试传递向量 mcrypt_create_iv -nothing

【问题讨论】:

    标签: php encryption mcrypt


    【解决方案1】:

    要解密,您需要具有用于加密的相同初始化向量 ($iv)。

    将它作为参数传递给您的函数,一切都应该没问题。

    【讨论】:

    • 这是我愚蠢的加密,一个密钥它工作,另一个密钥不会编码 - 这太可怕了!
    • 将初始化向量视为键的一部分。
    • IV 不是密钥的一部分。 IV 可以明文提供;钥匙显然不能。
    • 确实,通常以明文形式提供。我的意思是“你需要它来解密”中的“密钥的一部分”=)
    猜你喜欢
    • 2016-08-29
    • 2012-11-01
    • 2016-10-03
    • 2014-01-29
    • 2014-05-14
    • 2011-08-16
    • 2012-03-28
    • 2015-06-17
    • 1970-01-01
    相关资源
    最近更新 更多