我想制作一个系统,在其中我可以根据硬盘序列号加密/解密某些内容,以便 key 无法在计算机之间共享。
最佳答案
对于每个 Unix 变体,如何获取硬盘的序列号是不同的。
对于 Linux,如果您以 root 身份运行,最直接的方法是使用“hdparm -i/dev/sda”或更正确地使用它使用的 C 代码(ioctl)。
序列号在 Linux 中通常没有用处,因此如果您不是以 root 身份运行,则必须询问实际有用的少数子系统之一 - udev。它使用序列号来唯一标识设备,并将此信息存储在/run/udev/data (或/var/run/udev/data)下的一个文件中,该文件的名称基于 Linux 分配的设备号。
找到的第一个磁盘的数据位于/var/run/udev/data/b8:0
第二个位于/var/run/udev/data/b8:16
这是一个文本文件。
顺便说一句:磁盘序列号不是一个好的加密 key ,正如您所见,它很容易找到,而且并不像看起来那样随机。
关于java - 如何在 Linux 中使用 C 或 Java 获取硬盘的序列号 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28727476/