关于字符串问题
将字符串
char buff[6] = "12345";
通过DLL加密动态库加密后,变成乱七八糟的字符串,
像“"??BT?锜\x13》Ho櫄\xE6"”之类,用
char buf1[128]
接收这些这符串,看了下strlen(buf1)为20,然后再把(buf1)解密能得到"12345",
但是把(buf1)赋值给一个编辑框控件TEdit的Text之后(或者是把buf1的值存到INI文件中),再用
char buf2[128]
去接收TEdit的Text,
buf2 = "??BT?锜\x13》Ho櫄"
buf2 != buf1了!本来Buff1的长度为20,到buf2这里变成了19。
出现这种原因是什么呢?谢谢~~
[解决办法]
加密之后,
int nLen = strlen(buf1);
buf1[nLen] = 'E'; //在最后加一个可以显示的字符,随便什么都行
buf1[nLen + 1] = '\0'; //收尾符
然后解密前
nLen = strlen(buf2);
buf2[nLen - 1] = '\0'; //去掉加的字符‘E’
解密,这样应当可以吧
[解决办法]
加密后将字符串转换为16进制保存
如果不以16进制的形式保存对某些特殊符号可能会处理不当,到时候可能解密会有问题
记得这里曾经有个WCDESComp的控件,对加解密字符串挺管有,你可以去找来参考一下
[解决办法]
"去接收TEdit的Text"
你怎么接受的?