我想了解openssl庫與CLI相比如何工作,並且無法設法找到如何在這兩者中使用SHA256來獲得相同的答案。SHA256有表cli和openssl庫
使用im OpenSSL的1.0.1e-FIPS 2013年2月11日
我的CLI命令是
echo a | openssl sha256
輸出
(標準輸入)= 87428fc522803d31065e7bce3cf03fe47596631e5e07bbd7a0fde60c4cf25c7
C程序
int main(int argc, char *argv[]) {
unsigned char msg[ 100 ];
long unsigned int msg_len;
unsigned char md[ SHA256_DIGEST_LENGTH ]; // SHA256_DIGEST_LENGTH = 32
msg_len = 100;
memset(msg, 0, msg_len);
msg[ 0 ] = 'a';
msg[ 1 ] = '\0';
if (! simpleSHA256(msg, msg_len, md)) {
return 1;
}
hex_print(md); // for 0<=i<=32 do printf("%02x", md[ i ]);
}
其中
bool simpleSHA256(void *input, unsigned long length, unsigned char *md) {
SHA256_CTX context;
if (! SHA256_Init(&context))
return false;
if (! SHA256_Update(&context, (unsigned char*)input, length))
return false;
if (! SHA256_Final(md, &context))
return false;
return true;
}
與輸出:
653504743d03afc72051d85fce9bcb8afd05d7911e5c9fe91265fa36d7d98b0
我究竟做錯了什麼?導致這兩者都假設給出相同的輸出
有一件事肯定是'echo a'會打印出'a','\ n'。換行符可以通過'echo -n a'來抑制。但結果仍然不同,所以這不是全部答案。 – DevSolar