vc 中怎样将字符串在乱码和真正的字符串之间转换
如题将char*类型转换为乱码(字符串转换为乱码)以及将乱码转化为char*类型(乱码被还原为字符串)我要将它保存到文件,我要保证它不能被记事本读取(用记事本打开将看到乱...
如题
将char *
类型转换为乱码(字符串转换为乱码)
以及将乱码转化为char *类型(乱码被还原为字符串)
我要将它保存到文件,我要保证它不能被记事本读取(用记事本打开将看到乱码,一点也不能识别,只有我的程序能够读出来) 展开
将char *
类型转换为乱码(字符串转换为乱码)
以及将乱码转化为char *类型(乱码被还原为字符串)
我要将它保存到文件,我要保证它不能被记事本读取(用记事本打开将看到乱码,一点也不能识别,只有我的程序能够读出来) 展开
展开全部
char* 是指向字符的指针类型。
其实你需要存入文件的,一般还是char型字符串吧。
想让它不被记事本读取很简单,你把需要加密的字符串作为一个字符数组,采用一些加密算法对整个字符串进行加密就可以了。
ASCII码中0x31对应字符'1',你写入了字符'1'其实是写入一个字节0x31。
举个最简单的加密算法-异或加密。
把字符串数组中的所有字符与你自定义的密钥(长度、内容均自己指定)作按字节异或后,再写入文件。读取文件时,再用相同的加密符进行一次异或后,就可以恢复原来的面貌了。
设128 位密钥为“78 7A 16 2E 52 31 D7 69 E7 A4 5E 9E”,报文明文为“20 01
00 00 02 D2 68 50 86 1F A4 1F A9 D2 68 50 87 23 28 23 2D 32”。因明文长度为22
字节,密钥长度为12 字节,故密钥序列从第12 字节开始回绕。
加密后的密文为“58 7B 16 2E 50 E3 BF 39 61 BB FA 81 D1 A8 7E 7E D5 12 FF 4A CA 96”,已经面目前非了。
读取文件时,以相同的密钥对其再次异或就可恢复。
其实你需要存入文件的,一般还是char型字符串吧。
想让它不被记事本读取很简单,你把需要加密的字符串作为一个字符数组,采用一些加密算法对整个字符串进行加密就可以了。
ASCII码中0x31对应字符'1',你写入了字符'1'其实是写入一个字节0x31。
举个最简单的加密算法-异或加密。
把字符串数组中的所有字符与你自定义的密钥(长度、内容均自己指定)作按字节异或后,再写入文件。读取文件时,再用相同的加密符进行一次异或后,就可以恢复原来的面貌了。
设128 位密钥为“78 7A 16 2E 52 31 D7 69 E7 A4 5E 9E”,报文明文为“20 01
00 00 02 D2 68 50 86 1F A4 1F A9 D2 68 50 87 23 28 23 2D 32”。因明文长度为22
字节,密钥长度为12 字节,故密钥序列从第12 字节开始回绕。
加密后的密文为“58 7B 16 2E 50 E3 BF 39 61 BB FA 81 D1 A8 7E 7E D5 12 FF 4A CA 96”,已经面目前非了。
读取文件时,以相同的密钥对其再次异或就可恢复。
展开全部
这些都太复杂了,简单点,去到网上搜一个base64的编解码函数,写的时候编码,读出来之后解码,就大功告成了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对每个字节取反即可,恢复时,只需要再取反
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写的时候以二进制写。代码示例如下:
char buffer[1024];
FILE* pfile = fopen("c:\\binary.txt", "w+b"); // 二进制方式写
fwrite(buffer, 1024, 1, pfile);
fflush( pfile );
fclose( pfile );
读取
FILE* pfile = fopen("c:\\binary.txt", "r+b"); // 二进制方式读
fread(buffer, 1024, 1, pfile);
fclose( pfile );
char buffer[1024];
FILE* pfile = fopen("c:\\binary.txt", "w+b"); // 二进制方式写
fwrite(buffer, 1024, 1, pfile);
fflush( pfile );
fclose( pfile );
读取
FILE* pfile = fopen("c:\\binary.txt", "r+b"); // 二进制方式读
fread(buffer, 1024, 1, pfile);
fclose( pfile );
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询