程序主要代码:
int main (int argc, char argv[])
{
aes256_context ctx;
uint8_t key[32];
char *filename1="/home/phaeton/user/my_code/source.txt";
char *filename2="/home/phaeton/user/my_code/desc.txt";
int fctl1=0,fctl2=0;// 文件描述符
int tmp,i=0,j=0;
char buf[4096];
char buf1[16];
memset(buf,0,sizeof(char)*4096);
memset(buf1,0,sizeof(char)*16);
/ put a test vector */
for (i = 0; i < sizeof(key);i++) key[i] = i;
DUMP("key: ", i, key, sizeof(key));
printf("---\n");
fctl1=open(filename1,O_RDONLY);
if(fctl1 == -1)
{
printf("open file error check the file state");
return 0;
}
fctl2=open(filename2,O_WRONLY||O_APPEND||O_CREAT,777);
if(fctl2 == -2)
{
printf("create file error ");
return 0;
}
tmp=read(fctl1,buf,4096);
printf("%d",tmp);
printf("\n");
printf("%s\n",buf);
//处理buf[]中的文件数据,只能16位为一个单位进行加密
for(i=0;i<tmp;i++)
{
printf("%c",buf[i]);
}
printf("\n");
for(i=0;i*16<tmp;i++)
{
for (j=0;j<16;j++)
{
printf("%c",buf[j+16*i]);
}
printf("\n");
/*aes256_init(&ctx, key);
aes256_encrypt_ecb(&ctx, buf1);
DUMP1("enc: ", j, buf, sizeof(buf1));
aes256_init(&ctx, key);
aes256_decrypt_ecb(&ctx, buf1);
DUMP1("dec: ", j, buf, sizeof(buf1));
aes256_done(&ctx);*/
}
return 0;
} /* main */
文件内容:
为什么会出现乱码 真是奇了怪了 整体输出没有问题
拆分开输出 就形成乱码
搞了一天了没搞明白
运行结果:
求大神指导,实在搞不定了!
乱码就说明了要么是你拆分前后使用的字符编码是不一样,要么是你所使用的系统里中文字符不是16位