1

OpenSSL ライブラリと、それらが提供する cmd ライン ユーティリティにこの小さな問題があります。

以下は、文字列から SHA1 ハッシュを生成する C プログラム"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;
 }

私が使用するコマンドラインユーティリティは次のとおりです。

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

値が異なりますが、2 つの動作に違いがある理由を誰かが示唆できますか?

4

1 に答える 1

2

echo "hello, world" は末尾に改行を追加しました。

同じ結果を得るには、echo -n "hello, world" | を試してください。openssl sha1

于 2013-01-11T05:48:26.053 に答える