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

时间:2017-07-13 06:32:56

标签: c++ encryption storage

我正在开发一个自己创建加密的项目。 我知道这不安全,我只想为我自己和解决这个问题

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

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

我想在这个项目中使用C ++来存档最大速度。

感谢您的建议。

2 个答案:

答案 0 :(得分:2)

在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

答案 1 :(得分:0)

好的,我决定创建一个只包含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

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