我正在开发一个自己创建加密的项目。 我知道这不安全,我只想为我自己和解决这个问题。
对于algorythm的基础知识,我需要将硬盘上的BIT编号XY从0更改为1。 问题是我不知道该怎么做。我将为这个从未有过数据的项目使用一个完全新的驱动器。
让我们说这个驱动器将是250GB大,我想将此驱动器上的第一个BIT从0更改为1,我将如何做到这一点? 我是否需要创建一个只有0的大文件,或者我可以直接告诉驱动器上的写入部分它需要转到XY位置并将此位置的BIT从0更改为1?
我想在这个项目中使用C ++来存档最大速度。
感谢您的建议。
答案 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
这只是伪代码。 如果有人有更好的想法如何解决这个问题,请告诉我。