fixed wrong message length because of empty character after message string

main
Jonas Arnold 3 years ago
parent ae5ccf9fa8
commit 4e5a00e41a
  1. 16
      ASYD_Cryptograhpy/SW05-SHA1/main.c

@ -22,7 +22,7 @@
#define VALUE_LENGTH 32 #define VALUE_LENGTH 32
#define MESSAGE_DIGEST_LENGTH 160 #define MESSAGE_DIGEST_LENGTH 160
#define BLOCK_LENGTH (512/8) #define BLOCK_LENGTH (512/8)
#define INPUT_MESSAGE ("abc") #define INPUT_MESSAGE ("Testnachricht123")
#pragma region SHA1-Constants #pragma region SHA1-Constants
// initial hash values // initial hash values
@ -72,28 +72,32 @@ void main(void) {
printf("------ Padding message ------\n\n"); printf("------ Padding message ------\n\n");
#pragma region Padding #pragma region Padding
// print information about message without padding
unsigned char messageNoPadding[] = INPUT_MESSAGE; unsigned char messageNoPadding[] = INPUT_MESSAGE;
printf("Size of message without padding: %i bits\n", (int)(sizeof(INPUT_MESSAGE) * 8)); int numBytesMessage = (sizeof(INPUT_MESSAGE) - 1); // -1 because of '\0' at end of the string
printf("Size of message without padding: %i bits\n", numBytesMessage*8);
printf("Message without padding\n"); printf("Message without padding\n");
printBits(sizeof(messageNoPadding), &messageNoPadding); printBits(sizeof(messageNoPadding), &messageNoPadding);
unsigned char message[BLOCK_LENGTH] = ""; unsigned char message[BLOCK_LENGTH] = "";
// fill in message // fill in message
for (uint32_t i = 0; i < sizeof(INPUT_MESSAGE); i++) for (uint32_t i = 0; i < numBytesMessage; i++)
{ {
message[i] = INPUT_MESSAGE[i]; message[i] = INPUT_MESSAGE[i];
} }
// set bit // set bit
message[sizeof(INPUT_MESSAGE)] = 0b10000000; message[numBytesMessage] = 0b10000000;
printf("\nMessage after adding 1: \n"); printf("\nMessage after adding 1: \n");
printBits(sizeof(message), &message); printBits(sizeof(message), &message);
message[BLOCK_LENGTH - 1] = sizeof(INPUT_MESSAGE) * 8; // add length
message[BLOCK_LENGTH - 1] = numBytesMessage * 8;
printf("\nMessage after adding length: \n"); printf("\nMessage after adding length: \n");
printBits(sizeof(message), &message); printBits(sizeof(message), &message);
#pragma endregion #pragma endregion
#pragma endregion #pragma endregion
printf("****** Hash computation ******\n\n"); printf("\n\n****** Hash computation ******\n\n");
#pragma region Hash computation #pragma region Hash computation
printf("\n------ Prepare message schedule ------\n\n"); printf("\n------ Prepare message schedule ------\n\n");

Loading…
Cancel
Save