【问题标题】:How to properly convert SHA1CryptoServiceProvider to c++? [duplicate]如何正确地将 SHA1CryptoServiceProvider 转换为 c++? [复制]
【发布时间】:2019-12-10 16:51:26
【问题描述】:

我需要将此 C# 代码转换为 QT C++:

 SHA1 sha1 = new SHA1CryptoServiceProvider();
 byte[] resultSha1 = sha1.ComputeHash(Encoding.Default.GetBytes(PASS));
 PASS = (BitConverter.ToString(resultSha1).Replace("-", string.Empty)).ToLower();

我尝试使用它,但输出与所需的相差甚远:

 sha1 = new QCryptographicHash(QCryptographicHash::Sha1);
 resultSha1 = sha1->hash(userPASS.toUtf8(), QCryptographicHash::Sha1);

 userPASS = QString(resultSha1).replace("-", "");

您对正确执行此操作有何建议?

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    一些尝试:

    1. 检查 Encoding.Default 是否真的是 UTF-8。
    2. 检查输入是否相同
    3. QCryptographicHash#hash 以二进制而不是十六进制生成其摘要,因此您需要先执行resultSha1.toHex()

      userPASS = QString("%1").arg(QString((QCryptographicHash::hash(userPASS.toUtf8(),QCryptographicHash::Sha1).toHex())));
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 2015-04-24
      • 1970-01-01
      • 2013-02-02
      • 2021-08-16
      • 2018-07-19
      相关资源
      最近更新 更多