2013-01-11 25 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,它的工作 –