读书人

关于字符串有关问题

发布时间: 2012-03-02 14:40:28 作者: rapoo

关于字符串问题

将字符串

char buff[6] = "12345";

通过DLL加密动态库加密后,变成乱七八糟的字符串,

像“"??BTX?\x13》Ho\xE6"”之类,用

char buf1[128]

接收这些这符串,看了下strlen(buf1)为20,然后再把(buf1)解密能得到"12345",

但是把(buf1)赋值给一个编辑框控件TEdit的Text之后(或者是把buf1的值存到INI文件中),再用

char buf2[128]

去接收TEdit的Text,

buf2 = "??BTX?\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"

你怎么接受的?

读书人网 >C++ Builder

热点推荐