我正在使用布雷特给出的这个例子:

Encrypt and decrypt a string

并这样做:

public static bool VerifyLicenseKey(string applicationGuid)
{
  Console.WriteLine("G: " + applicationGuid);
  var appSettings = AppSettings.GetInstance();
  if (appSettings == null)
  {
    return false;
  }
  var hwinfo = HardwareInfo.GetHardwareSerial();
  Console.WriteLine("h: " + hwinfo);
  Console.WriteLine("a: " + applicationGuid);
  var currentSerial = Crypto.EncryptStringAES(hwinfo, applicationGuid);
  Console.WriteLine("c: " + currentSerial);
  Console.WriteLine("o: " + appSettings.LicenseSerialNumber);
  if (currentSerial == appSettings.LicenseSerialNumber)
  {
    return true;
  }
  return false;
}


}

每次GetHardwareSerialapplicationGuid都返回相同的位置,但是当我调用EncryptStringAES时却不同。

我使用的课程错误吗?难道每次都不一样吗?

如果不是,那么有人有更好的例子,其中加密的值相同吗?

最佳答案

您所指的算法使用RijndaelManaged class,并且似乎正在使用IV property的默认值,该默认值在创建新实例时(正确地)会自动设置为新的随机值(请参见文档)。

因此,您每次都会得到不同的结果。 (例如,您可以在Wikipedia上找到有关IV用途的更多信息。)

08-27 20:02
查看更多