Facebook app secret是一个包含32个字符(0-9,a-f)的字符串,因此它代表一个128位字节数组。 Facebook uses this as the key to generate signed request using HMAC-SHA256。这是正确的用法吗?我认为HMAC-SHA256应该使用256位密钥。
答案 0 :(得分:7)
如果密钥的长度大于散列的内部块大小,HMAC将使用HASH(密钥)并将其用作密钥。因此,大于散列的内部块大小的密钥不会提供比相同大小的密钥更好的安全性。根据HMAC规范,较短的键被填零以等于散列的内部块大小。
使用HMAC-SHA-256的128位密钥是不可能的。如果你的意思是用零填充到512位的128位,那么对于短期认证来说它可能是正常的。我建议至少256位,理想情况下你会想要使用与底层哈希的内部块大小相等的东西。
答案 1 :(得分:6)