OpenSSL SHA1 API和命令行实用程序的输出差异

时间:2013-01-11 05:15:19

标签: openssl sha1

我对OpenSSL库及其提供的cmd行实用程序存在这个小问题。

以下是我的C程序,用于从字符串"hello, world"生成SHA1哈希:

/* 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;
 }

我使用的命令行实用程序是:

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

价值观不同,任何人都可以提出为什么两者的行为存在差异?

1 个答案:

答案 0 :(得分:2)

echo“hello,world”在最后添加了一个尾随换行符。

要产生相同的结果,请尝试echo -n“hello,world”| openssl sha1