Я использую следующий код, чтобы получить процессор ID:Может ли идентификатор процессора использоваться для криптографического ключа AES?
System.Management.ManagementClass theClass = new System.Management.ManagementClass("Win32_Processor");
System.Management.ManagementObjectCollection theCollectionOfResults = theClass.GetInstances();
foreach (System.Management.ManagementObject currentResult in theCollectionOfResults)
{
MessageBox.Show(currentResult["ProcessorID"].ToString());
}
Является процессор ID уникальный идентификатор для каждого компьютера? Я хочу создать случайный уникальный номер для каждого компьютера, используемого в качестве криптографического ключа AES. Я не хочу использовать MAC-адрес, потому что знаю, что MAC-адрес можно изменить.
Возможный дубликат [WIN32_Processor :: Is ProcessorId Unique для всех компьютеров] (http://stackoverflow.com/questions/1101772/win32-processoris-processorid-unique-for-all-computers) – Jon
Дополнительно: подумайте о том, что произойдет, если какой-нибудь аппаратный компонент, который вы используете для криптовального ключа, внезапно умрет. – Jon
Почему бы просто не использовать 'Guid.NewGuid()'? Даже это не идеально, но если вы уже думаете о том, чтобы использовать что-то столь же легко извлекаемое, как CPUID, вы могли бы просто генерировать Guid и хранить его где-то; возможно, шифруя это с помощью некоторого закрытого ключа, известного только вашей программе. Но даже тогда у вас есть проблема, что программа может быть декомпилирована. –