Vinay KS
Vinay KS

Reputation: 45

Difference in the outputs of OpenSSL SHA1 API and command line utility

I have this small issue with OpenSSL library and the cmd line utility provided by them.

Below is my C program to generate the SHA1 hash from the string "hello, world":

/* test sha1 sample program */
#include <openssl/sha.h>
#include <stdio.h>

int main()
{
   char input[] = "hello, world";
   unsigned char output[20];

   int i = 0;

   SHA1(input,strlen(input) ,output);

   for( i =0;i<20;i++)
     printf(" %x " , output[i]);
 // value printed --  b7  e2  3e  c2  9a  f2  2b  b  4e  41  da  31  e8  68  d5  72  26  12  1c  84

 // value from CMD
 // utility           cd  50  d1  97  84  89  70  85  a8  d0  e3  e4  13  f8  61  2b  09  7c  03  f1

   return 0;
 }

The command line utility I use is:

>echo "hello, world" | openssl sha1 
(stdin)= cd50d19784897085a8d0e3e413f8612b097c03f1

The values are different, can anyone suggest why there is difference in the behaviour of the two?

Upvotes: 1

Views: 1382

Answers (1)

fwu
fwu

Reputation: 369

echo "hello, world" added a trailing newline at the end.

To produce the same result, please try echo -n "hello, world" | openssl sha1

Upvotes: 2

Related Questions