相关疑难解决方法(0)

mcrypt加密将一堆'%00'添加到字符串的结尾

使用OAuth并使用以下函数使用字符串加密密钥,我们称之为'foo'(实际上是OAuth令牌)

public function encrypt( $text )
{
    // add end of text delimiter
    $data = mcrypt_encrypt( MCRYPT_RIJNDAEL_128, $this->key, $text, MCRYPT_MODE_ECB, $this->iv );
    return base64_encode( $data );
}
Run Code Online (Sandbox Code Playgroud)

当我使用反函数解密它时,我最终得到:

功能:

    public function decrypt( $text )
    {
        $text = base64_decode( $text );
        return mcrypt_decrypt( MCRYPT_RIJNDAEL_128, $this->key, $text, MCRYPT_MODE_ECB, $this->iv );
    }
Run Code Online (Sandbox Code Playgroud)

结果:

foo%00%00%00%00%00%00%00%00%00%00%00%00%00%00

编辑:

再看一下,我意识到它实际上是对%00的URL编码,这意味着我的字符串以某种方式被空字符填充?所以我目前正在使用trim()来摆脱它们,但我想了解为什么会发生这种情况.

php encryption padding mcrypt

6
推荐指数
1
解决办法
2088
查看次数

标签 统计

encryption ×1

mcrypt ×1

padding ×1

php ×1