我想在构建的API中实现HMACSHA256请求签名。根据我从https://www.rfc-editor.org/rfc/rfc4868了解到的,最好将密钥与哈希算法具有相同的位数(即,SHA256秘密密钥应为256位/32个字节)。
我可以使用C#中许多不同的随机数生成器之一,还是这些密钥需要以特定方式生成。
最后,亚马逊网络服务(AWS)使用HMACSHA256,但它们提供的秘密密钥(至少是对我而言)为320位/40个字节(当使用UTF-8将密钥转换为字节时,请参见https://github.com/aws/aws-sdk-net/blob/master/AWSSDK/Amazon.Runtime/Internal/Auth/AWS4Signer.cs#L205-L232)。由于被截断,是否有理由使用比哈希算法所需更多的位数?