有可能在c#中处理单个比特吗?尝试实现SHA256生成器



只是为了好玩,我正在阅读维基百科上的伪代码,它说预处理时将位'1'附加到消息中,然后将足够的'0'位附加到结果消息长度模数512是448。然后以64位大端整数的形式附加消息的长度。

好吧。我不确定如何追加只是一个"1"位,但我认为它可能只是追加128(1000000),但这不会在偶然的机会产生的消息长度模数512已经是448没有那些额外的0。在这种情况下,我不确定如何追加一个1,因为我需要处理至少字节。这在c#中可能吗?

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

仅在消息为偶数字节时才需要处理字节。如果消息长度(mod 64)为56,则附加一个字节0b10000000,后跟63 0字节,后跟长度。否则,添加一个字节0b10000000,后面跟着0到62 0字节,后面跟着长度。

您可以查看System.Collections中的BitArray类。其中一个函数重载接受一个字节数组,等等。

最新更新