Hash_hmac()返回30个字符的签名,而不是32个字符的签名


hash_hmac() returning a 30 character signature, not a 32 character signature

期望这一系列函数生成一个32个字符长的签名,以便通过OAuth v1进行身份验证。

    $h = hash_hmac("sha1", $url, $key, $raw_output=TRUE);
    $signature = base64_encode($h);

然而,它始终产生一个30个字符长的签名,即使我改变$url参数。我是否理解如何创建OAuth签名?

sha1产生20个字节。由于base64将增加这里提到的字符串长度,这将产生一个28个字符长的字符串(如果在签名上调用urlencode,这个字符串可能更长)。

我对oauth不太熟悉,但是在规范中似乎没有任何东西要求32个字符的签名