我被要求将文件分割成固定大小的 block 来进行文件加密。更具体地说,我有很多文件,可能是二进制文件或文本文件。
我被要求编写一个用户程序,将这些文件作为输入,将每个文件拆分为多个 32 位 block ,然后发送 32 位 block 。
场景是用户通过将他们的文件分成 block ,加密 block (使用 RSA),然后将密文发送到服务器来在远程服务器中备份他们的文件。
考虑两个文件,一个是 33 位文本文件 A,另一个是 34 位二进制文件 B。
A可以划分为两个32位的 block A1和A2(A2的后31位全为0)。
B可以划分为两个32位的 block B1和B2(B2的最后30位全为0)。
如果我得到A1(或A2、B1、B2),那么我就把A1看成一个32位的整数,就可以进行RSA加密了。
我会写RSA加密的代码,但遗憾的是我不知道如何编写获取A1、A2、B1、B2的C代码。
谁能帮我写个示例代码或给我一些引用?
最佳答案
下面是高级算法,您可以轻松将其转换为 C 代码:
char* get_Next_Block_From_File(FILE *fp, int seek_offset, int blockSize)
{
// Open file
// lseek to seek_offset
len = blockSize / 8;
bit_pos = blockSize % 8;
for (i=0; i<len; i++) {
copy_from_file_to_local_buffer_byte_by_byte();
}
if (bit_pos) {
byte[i] <<= (8 - bit_pos);
append_byte_to_local_buffer();
}
return local_buffer;
}
关于c - 在 C 中将文件拆分为固定大小的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13975760/