文章目录[x]
- 1:文件加密
- 2:文件解密
假如app需要将图片放到第三方服务器,为了防止图片泄密,可以对图片进行加密;
加密思路:把每个字节拿出来,对每个字节都处理。或者把某部分拿出来进行处理。
文件加密
可以通过fgetc方法和fputc方法将文件的单个字节取出修改放入新文件中:
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char const *argv[])
{
char* target_name = "/Users/heyi/Desktop/cpp/clz/android_cpp/timg.jpeg";
char* en_name = "/Users/heyi/Desktop/cpp/clz/android_cpp/timg_en.jpeg";
FILE* target = fopen(target_name,"rb");
FILE* en = fopen(en_name,"wb");
if (target&&en)
{
int c;
//EOF :end of file ;
while ((c=fgetc(target))!=EOF)
{
fputc(c^5,en);
}
fclose(target);
fclose(en);
}else
{
printf("文件打开失败。\n");
}
return 0;
}
文件解密
在上面的代码中,对文件的每个字节进行了异或5的运算,在解密时只需要再次对文件的每个字节进行异或5的操作就行了:
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char const *argv[])
{
char* target_name = "/Users/heyi/Desktop/cpp/clz/android_cpp/timg_en.jpeg";
char* en_name = "/Users/heyi/Desktop/cpp/clz/android_cpp/timg_target.jpeg";
FILE* target = fopen(target_name,"rb");
FILE* en = fopen(en_name,"wb");
if (target&&en)
{
int c;
//EOF :end of file ;
while ((c=fgetc(target))!=EOF)
{
fputc(c^5,en);
}
fclose(target);
fclose(en);
}else
{
printf("文件打开失败。\n");
}
return 0;
}
为了性能着想,也可以使用Mat矩阵改动部分字节来进行加密。