如何正确地将SHA1CryptoServiceProvider转换为c ++?

How to properly convert SHA1CryptoServiceProvider to c++?

本文关键字:转换 SHA1CryptoServiceProvider 正确地      更新时间:2023-10-16

我需要将此 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("-", "");

你对正确这样做有什么建议?

可以尝试的一些方法:

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

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