c - 在 C 中将文件拆分为固定大小的 block

标签 c file split partitioning

我被要求将文件分割成固定大小的 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/

相关文章:

c - 为什么 "for(;i<=10;i++)"有效但 "for(i=0;i<=10;;)"无效?

php - 无法在 laravel 5.2 中使用 Storage::put($file, $content) 保存我的文件

c - access(path, flag) 即使文件存在也返回 0

java - 带空格的字符串解析

python - 我怎样才能沿着每个字母分割一个字符串

C 表示函数失败的方法

c - valgrind 误解公会

java - 在 Java 中拆分多个分隔符

c - 在纯 C 中,如何制作相当于 "map"的内容?

java - 使用 FileReader 和 Scanner 读取文件