我对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
价值观不同,任何人都可以提出为什么两者的行为存在差异?
答案 0 :(得分:2)
echo“hello,world”在最后添加了一个尾随换行符。
要产生相同的结果,请尝试echo -n“hello,world”| openssl sha1