Xcode C++ MD5 hash

Xcode C++ MD5 hash

本文关键字:hash MD5 C++ Xcode      更新时间:2023-10-16

我想在Xcode c++中使用MD5对一个简单的字符串进行哈希处理。我搜索了很多,但找不到教程。我必须#import <CommonCrypto/CommonDigest.h>.仅此而已吗?之后我该如何拨打MD5?我找到了这段代码,但它给了我一个错误。我将如何获得我的哈希值是否在字符串变量中更新?

 unsigned char digest[16];
 const char* string = "Hello World";
 struct MD5Context context;     **(error: variable has incomplete type
 MD5Init(&context);
 MD5Update(&context, string, strlen(string));
 MD5Final(digest, &context);

我只是使用一个简单的命令行应用程序,只有基本的 main.cpp 内部没有标头。我真的很感激任何帮助!!!

您使用了错误的API。我不确定你从哪里得到这些(它们看起来像OpenSSL调用),但它应该看起来像这样:

#include <stdio.h>
#include <string.h>
#include <CommonCrypto/CommonDigest.h>
int main()
{
    unsigned char digest[CC_MD5_DIGEST_LENGTH];
    const char string[] = "Hello World";
    CC_MD5_CTX context;
    CC_MD5_Init(&context);
    CC_MD5_Update(&context, string, (CC_LONG)strlen(string));
    CC_MD5_Final(digest, &context);
    for (size_t i=0; i<CC_MD5_DIGEST_LENGTH; ++i)
        printf("%.2x", digest[i]);
    fputc('n', stdout);
    return 0;
}

输出

b10a8db164e0754105b7a99be72e3fe5

在此处验证。

有一个一次性版本:

#include <CommonCrypto/CommonDigest.h>
unsigned char digest[16];
const char* string = "Hello World";
CC_MD5(string, (CC_LONG)strlen(string), digest);

您将需要包含Security.framework(或至少包含适用的库文件)。