mco_crypt_stream
接口适用于实时数据库 RT 。
此函数对大小为 size
的数据缓冲区 buf
进行加密或解密,以便将其放入或从流中取出。
与基于块的函数 mco_crypt_block()
不同,此函数假定缓冲区大小是任意的,这是基于流的操作的常见使用模式。
void mco_crypt_stream(
mco_crypt_ctx_t const* crypt_ctx,
mco_crypt_state_t* state,
uint1* buf,
uint4 size
);
有关概述,请参阅数据库加密页面。
参数
crypt_ctx
mco_crypt_ctx_t const*
已初始化加密上下文的地址。
state
mco_crypt_state_t*
指向流当前位置加密过程的加密状态结构的地址。
buf
uint1*
要加密/解密的数据缓冲区的地址。
size
uint4
要放入或从缓冲区 buf
中取出的大小。
返回
没有返回值。
示例
以下代码片段演示了加密/解密外部文件:
/* 基于流的加密代码示例 */
FILE *fin, *fout;
char buff[100];
const int buff_size = sizeof(buff);
const char *cipher = "my cipher key";
mco_crypt_ctx_t crypt_ctx;
mco_crypt_state_t crypt_state;
size_t n;
mco_crypt_init_ctx(&crypt_ctx, cipher);
mco_crypt_init_state(&crypt_ctx, &crypt_state);
fin = fopen("unencrypted.file", "rb");
fout = fopen("encrypted.file", "wb");
do
{
n = fread(buff, buff_size, 1, fin);
mco_crypt_stream(&crypt_ctx, &crypt_state, buff, (uint4)n);
fwrite(buff, n, 1, fout);
} while (n == buff_size);
fclose(fin);
fclose(fout);
文件
头文件:
mco.h
源文件:
mcocryptaes.c
库:
libmcocryptaes.a
头文件:
mco.h
源文件:
mcocryptstub.c
库:
libmcocryptstub.a