【发布时间】:2019-10-30 09:23:38
【问题描述】:
我正在用 C 实现 sha256 算法。我不需要算法方面的帮助。实现算法时的任务之一是向消息中填充位,使消息的长度为 512 位或长度为 512 位的倍数。
我最初认为向消息填充位只是意味着向它填充零。但是由于消息是字符消息(字符串),我认为我的逻辑不正确。
我的代码没有问题。我只是不知道如何将位填充到字符串(代码中的 msg)
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
char *msg=(char*)malloc(sizeof(char)*512);
printf("\n Enter a message");
scanf("%s",msg);
//I don't know how to pad bits to msg
return 0;
}
【问题讨论】:
-
您的 512 的 malloc 分配 bytes,而不是 bits。那你是什么意思,位还是字节??
-
我的意思是位而不是字节
-
抱歉 malloc 错误
-
编辑:忽略带有 512 的 malloc。将其视为 128
-
512 是 8 的倍数。因此是字节数的倍数。因此不需要填充位;只发送字节(除非填充位必须是特定值,1 或 0)。