Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Linux中使用C或Java获取序列号id硬盘?_Java_C_Linux_Unix_Operating System - Fatal编程技术网

如何在Linux中使用C或Java获取序列号id硬盘?

如何在Linux中使用C或Java获取序列号id硬盘?,java,c,linux,unix,operating-system,Java,C,Linux,Unix,Operating System,我想建立一个系统,在这个系统中,我可以根据硬盘序列号对某些内容进行加密/解密,这样就不能在计算机上共享密钥。如何获取硬盘序列号对于每个Unix变体都是不同的 对于Linux,如果您以root用户身份运行,最直接的方法是使用“hdparm-i/dev/sda”,或者更正确地使用它使用的C代码(ioctl) 序列号在Linux中通常不有用,因此如果您不是以root用户身份运行,则必须询问少数几个实际有用途的子系统之一——udev。它使用序列号来唯一标识设备,并将此信息存储在/run/udev/dat

我想建立一个系统,在这个系统中,我可以根据硬盘序列号对某些内容进行加密/解密,这样就不能在计算机上共享密钥。

如何获取硬盘序列号对于每个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中

这是一个文本文件


顺便说一句:磁盘序列号不是一个好的加密密钥,正如您所看到的,它很容易找到,并且不像看上去那么随机。

我认为它在基于Unix的系统上不起作用。请查看blkid(8)——看看这个答案: