我正在使用布雷特给出的这个例子:
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;
}
}
每次
GetHardwareSerial
和applicationGuid
都返回相同的位置,但是当我调用EncryptStringAES
时却不同。我使用的课程错误吗?难道每次都不一样吗?
如果不是,那么有人有更好的例子,其中加密的值相同吗?
最佳答案
您所指的算法使用RijndaelManaged class,并且似乎正在使用IV
property的默认值,该默认值在创建新实例时(正确地)会自动设置为新的随机值(请参见文档)。
因此,您每次都会得到不同的结果。 (例如,您可以在Wikipedia上找到有关IV用途的更多信息。)