有任何c++库可以使用类字符串与Md5一起使用吗

Any c++ library to work with Md5 using class string?

本文关键字:Md5 一起 字符串 任何 c++ 可以使      更新时间:2023-10-16

是否有任何c++标准库可以通过使用c++std::string而不是signedunsigned char*来处理Md5哈希(可能还有其他哈希(?。我在openssl/md5.h中没有发现它的实现,因为它的函数MD5有这样的头:unsigned char *MD5(const unsigned char *d, unsigned long n, unsigned char *md);

我之所以这么问,是因为我试图将QLabel lbResult的文本设置为字符串(来自QString&arg1(输入摘要的结果

MD5((const unsigned char *) arg1.toStdString().c_str(),32,cryptResult);
ui->lbResult->setText(getStringFromUnsignedChar(cryptResult));

我必须构建这个getStringFromUnsignedChar,它从结果中返回一个QString对象,但如果我有string MD5(string s);行,所有这些强制转换和这个函数都可以避免。提前谢谢。

您可以使用QCryptographicHash。例如:

QByteArray hash = QCryptographicHash::hash(arg1.toUtf8(), QCryptographicHash::Md5);
ui->lbResult->setText(hash.toHex());

您可以编写一个包装器:

std::string md5(const std::string &str) {
    std::array<unsigned char, MD5_DIGEST_LENGTH> result;
    MD5(reinterpret_cast<const unsigned char*>(str.data()), str.size(), result.data());
    return std::string(reinterpret_cast<const char*>(result.data()), result.size());
}