处理器ID可以用于AES加密密钥吗?

时间:2012-06-13 11:54:20

标签: c# aes mac-address

我正在使用以下代码获取处理器ID:

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是每台计算机的唯一ID吗?我想为每台计算机生成一个随机唯一编号,用作AES加密密钥。我不想使用MAC地址,因为我知道可以更改MAC地址。

2 个答案:

答案 0 :(得分:0)

这是一个糟糕的解决方案,因为CPU必须支持CPUID指令,系统可能包含更多的一个CPU。

答案 1 :(得分:0)

  1. 不保证处理器ID对每个cpu都是唯一的,或者保证完全存在。
  2. 硬件可以更换 - 你无法改变这一事实。
  3. 建议:
    如果您需要唯一标识一台机器 - 可以使用处理器ID或MAC地址或两者来获得唯一性。 (或任何其他硬件相关号码)。 但是你必须记住你是硬件 - 而不是用户,所以如果硬件发生了变化,就像你认识的人进行了整容,现在你不认识他。

    如果您需要识别用户(我认为更好),请让他选择用户名和密码。

    如果你需要确保只有一个以前确定的用户正在使用你的应用程序,而且你害怕他会盗用你的应用程序..唯一的办法是拥有一个服务器/中心点。