openssl和linux bash计算之间的MD5不匹配
MD5 mismatch between openssl and linux bash calculation
我在网上找到了计算md5:的代码
#include<openssl/evp.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
unsigned char *getMd5Hash(unsigned char *data, size_t dataLen, int *mdLen)
{
unsigned char *md = NULL;
EVP_MD_CTX *ctx = NULL;
const EVP_MD *mdType = EVP_md5();
*mdLen = EVP_MD_size(mdType);
md = (unsigned char *) malloc(*mdLen);
ctx = EVP_MD_CTX_create();
EVP_MD_CTX_init(ctx);
EVP_DigestInit_ex(ctx, mdType, NULL);
EVP_DigestUpdate(ctx, data, dataLen);
EVP_DigestFinal_ex(ctx, md, NULL);
EVP_MD_CTX_cleanup(ctx);
EVP_MD_CTX_destroy(ctx);
return md;
}
int main()
{
char data[1024];
unsigned char *md;
int i = 0, mdLen = 0;
memset(&data, 0, 1024);
std::cout<<"Enter string: ";
std::cin>>data;
md = getMd5Hash((unsigned char *)data, strlen(data), &mdLen);
for(i = 0; i < mdLen; i++) {
printf("%02x",md[i]);
} printf("n");
return 0;
}
我建造了它。
g++ aaa.cpp -lcrypto
然而,这段代码的结果与Linux bash:的md5sum的结果不同
$ ./a.out
Enter string: aaa
47bce5c74f589f4867dbd57e9ca9f808
$ echo -e "aaa"|md5sum
5c9597f3c8245907ea71a89d9d39d08e -
这种差异是从哪里来的?
尝试echo -n
。您也在散列行尾标记。
$ echo -e "aaa" | md5sum
5c9597f3c8245907ea71a89d9d39d08e -
$ echo -n "aaa" | md5sum
47bce5c74f589f4867dbd57e9ca9f808 -
相关文章:
- Qt SQLite没有查询或参数计数不匹配
- 模板参数推导失败,函数参数/参数不匹配
- 在使用累加时,C++中的运算符+不匹配
- C++ 与操作员不匹配<<
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 与'operator='不匹配(操作数类型'String'且"void")
- C++模板/别名 - 模板参数列表中参数 1 处的类型/值不匹配
- C4018:类内有符号、无符号不匹配
- 我在 .h 中有一个枚举类,并且在.cpp错误中有一个运算符重载:与"运算符<<不匹配
- 为什么我收到错误:"运算符<<不匹配?
- RE2 不匹配非 ASCII 字符
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- 模板推导:为什么函数指针模板定义在常量和/或引用时不匹配?
- 错误:"模板<类_Tp,类_Dp>类 std::unique_ptr"的模板参数列表中参数 1 的类型/值不匹配
- OpenSSL fips in C++ wrapper Library 如何?错误:指纹不匹配
- 为什么我的数组值与此处的全局变量不匹配?
- 引号之间匹配/不匹配,带有不可避免的引号和多行
- 映射迭代器与运算符不匹配
- C++调用和定义不匹配
- openssl和linux bash计算之间的MD5不匹配