将硬盘驱动器上的 BIT XXX 从 0 更改为 1

Changing BIT XXX on hard drive from 0 to 1

我正在做一个自己创建加密的项目。 我知道这不安全,我只想自己使用它,出于测试原因

对于算法的基础知识,我需要将硬盘上的 BIT 编号 XY 从 0 更改为 1。 问题是我真的不知道该怎么做。我将为这个项目使用一个从未有过数据的全新驱动器。

假设这个驱动器有 250GB 大,我想将这个驱动器上的第一个 BIT 从 0 更改为 1,我需要怎么做? 我是否需要创建一个只有 0 的大文件,或者我可以直接告诉驱动器上的写入部分它需要转到 XY 位置并将该位置上的 BIT 从 0 更改为 1?

我想在此项目中使用 C++ 以达到最大速度。

感谢您的建议。

在 Linux 上,而 运行 root,您可以从字面上将整个驱动器作为一个文件来寻址。像下面这样的东西来切换分区的第一位。

int f = -1;
unsigned char data = 0;

f = open("/dev/hdb1", O_RDWR);
read(f, &data, 1);
data = data ^ 0x80;
lseek(f, SEEK_SET, 0);
write(f, &data, 1);
close(f);

其中 /dev/hdb1 可能是第二个驱动器上的第一个分区。您也可以为整个驱动器本身寻址 /dev/hdb

好的,我决定创建一个仅包含 null 字节的文件。 如果我想更改单个 BIT,我将使用以下计算:

int bit = XXX; //BIT that will be adjusted
double byte = bit / 8; //Byte that contains BIT
Byte b = getByte( (int)byte ); //save the Byte
b = adjustByte( b, (int)((byte - bit)*8), VALUE ); //adjust the Byte with ASCII symbol
saveByteToFile( b, byte ); //save the Byte back to File to old position

这只是伪代码。 如果有人对如何解决这个问题有更好的想法,请告诉我。