Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以处理C#中的单个位?正在尝试实现SHA256生成器_C#_Algorithm_Hash_Sha - Fatal编程技术网

是否可以处理C#中的单个位?正在尝试实现SHA256生成器

是否可以处理C#中的单个位?正在尝试实现SHA256生成器,c#,algorithm,hash,sha,C#,Algorithm,Hash,Sha,只是为了好玩,我读了,它说,在预处理时,将位“1”附加到消息中,然后将足够的“0”位附加到生成的消息长度中,模数512是448。然后将消息的长度以位为单位追加为64位big-endian整数 好的。我不确定如何只追加一个“1”位,但我认为可以只追加128(1000 0000),但如果没有所有额外的0,那么结果消息长度模数512已经是448,那么这就不可能了。在这种情况下,我不确定如何只追加1,因为我需要处理至少个字节。在C#中可能吗 另外,是否有一种内置的方式来附加一个大端整数,因为我相信我的系

只是为了好玩,我读了,它说,在预处理时,将位“1”附加到消息中,然后将足够的“0”位附加到生成的消息长度中,模数512是448。然后将消息的长度以位为单位追加为64位big-endian整数

好的。我不确定如何只追加一个“1”位,但我认为可以只追加128(1000 0000),但如果没有所有额外的0,那么结果消息长度模数512已经是448,那么这就不可能了。在这种情况下,我不确定如何只追加1,因为我需要处理至少个字节。在C#中可能吗


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

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

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

您可以在System.Collections中签出该类。其中一个ctor重载使用字节数组等。

您可以在System.Collections中签出该类。其中一个ctor重载占用字节数组等。

我无法理解您的答复。你说过如果消息是偶数字节,你只需要处理字节,但是维基百科条目只处理比特。追加1位,追加k位,检查长度,以位为单位。如何替换字节?还有,你从哪里得到mod 64=56的数字?这篇文章说mod 512=448。@JohnSmith 8位到一个字节(在过去几十年的每台主流计算机上)。是的,但条目上说要先加1位,然后再加k位0。如果k是2,那么对于位,结果将是位“100”。如果我们处理的是字节,那么它将是“1000 0000”。这两个没有什么不同吗?@JohnSmith它们是不同的,但是你总是用8的倍数来计算位数。我很难理解你的回答。你说过如果消息是偶数字节,你只需要处理字节,但是维基百科条目只处理比特。追加1位,追加k位,检查长度,以位为单位。如何替换字节?还有,你从哪里得到mod 64=56的数字?这篇文章说mod 512=448。@JohnSmith 8位到一个字节(在过去几十年的每台主流计算机上)。是的,但条目上说要先加1位,然后再加k位0。如果k是2,那么对于位,结果将是位“100”。如果我们处理的是字节,那么它将是“1000 0000”。这两个没有什么不同吗?@JohnSmith它们是不同的,但是你总是使用8的倍数的位数。