2013-01-11 50 views
1

我有OpenSSL庫和它們提供的cmd行實用程序的這個小問題。OpenSSL SHA1 API和命令行實用程序的輸出差異

下面是我的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 

的值是不同的,任何人都可以說明爲什麼兩者的行爲有差異嗎?

回答

2

echo「hello,world」最後在尾部添加了換行符。

要產生相同的結果,請嘗試echo -n「hello,world」| openssl sha1

+0

謝謝@fwu,它的工作 –