gpt4 book ai didi

php - mcrypt 加密将 s 串 '%00' 添加到字符串末尾

转载 作者:可可西里 更新时间:2023-11-01 13:18:27 31 4
gpt4 key购买 nike

使用 OAuth 并使用以下函数使用我们称为“foo”(实际上是 OAuth token )的字符串加密 key

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 );
}

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

功能:

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

结果:

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

编辑:

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

最佳答案

Rijndael 是一个 block cypher ,这意味着它对特定长度的数据 block (在本例中为 128 位)进行操作。这意味着如果输入文本的长度不是 block 大小的倍数,则必须将其填充以适合。在这种情况下,填充为零;还有许多其他可能的 padding schemes可以使用,但如果您希望它们与 PHP 的 mcrypt 一起使用,则必须手动应用它们。

关于php - mcrypt 加密将 s 串 '%00' 添加到字符串末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5672012/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com