是否有可能处理C#中的各个位?试图实现SHA256生成器

时间:2013-04-15 02:01:51

标签: c# algorithm hash sha

只是为了好玩而这样做我正在阅读pseudo-code on Wikipedia并且它说在预处理时将位'1'附加到消息然后将足够的'0'位附加到结果消息长度模数512然后将消息的长度以位为单位附加为64位大端整数。

好。我不知道如何只追加一个'1'位,但我认为它可以只附加128(1000 0000),但这不会起作用,因此产生的消息长度模数512已经是448而没有全部那些额外的0。在这种情况下,我不知道如何只追加1,因为我需要处理至少字节。是否有可能在C#?

另外,是否有内置的方法来附加一个大端整数,因为我相信我的系统默认为小端。

2 个答案:

答案 0 :(得分:2)

它的定义方式是,如果消息是偶数个字节,则只需要处理字节。如果消息长度(mod 64)为56,则追加0b10000000的一个字节,后跟63 0字节,后跟长度。否则,追加0b10000000的一个字节,然后追加0到62 0字节,后跟长度。

答案 1 :(得分:1)

您可以查看System.Collections中的BitArray类。其中一个ctor重载需要一个字节数组等。