最近想手搓一个SHA的轮子,但有一事不解。FIPS PUB 180-4在描述SHA-1和SHA-2算法的时候用的单位基本上是bit或者word,尤其是在描述输入消息长度的时候,用的单位明确是bit,整个文档看下来貌似也没有特别强调输入消息一定得是整个整个的字节;然而常见的实现好像都是把输入消息当作字节数组来处理,而不考虑输入若干个bit的情况,为什么?是这种情况太少见,还是说考虑这种情况没什么用,抑或是SHA-1和SHA-2实际上就不允许非整数个字节的输入?

OpenSSL的EVP_Digest函数族,其中涉及到长度的参数都是以字节为单位的。


Go标准库的SHA-1函数和Hash接口,输入显然是以字节为单位的。

维基百科给出的的伪代码干脆直接表示消息长度一定是字符位数的整数倍(应该可以理解为整数个字节吧),这真的靠谱吗?


OpenSSL的EVP_Digest函数族,其中涉及到长度的参数都是以字节为单位的。


Go标准库的SHA-1函数和Hash接口,输入显然是以字节为单位的。

维基百科给出的的伪代码干脆直接表示消息长度一定是字符位数的整数倍(应该可以理解为整数个字节吧),这真的靠谱吗?
