|
这个是我进行TCP通讯时的一个非常简单的加密函数,参数1是加密的数据(待解密的数据),参数2是加密的代码
-(NSString *)Decryption : (NSString*)strData : (int)nCode
{
if(strData == nil || [strData isEqual: @""])
return @"";
NSString* strResult = @"";
unichar* szArray = malloc(sizeof(strData.length + 1));
int nCount = (int)strData.length;
for(int i=0;i < nCount; ++i){
szArray[i] = [strData characterAtIndex:i] ^ nCode;
}
szArray[nCount] = ""\0"";
// strResult = [strResult stringByAppendingFormat:@"%s", szArray];
strResult=[NSString stringWithCharacters:szArray length:nCount];
// free(szArray);
return strResult;
}
|
|
60分 |
free还是要打开,不能注释。
sizeof用错了,NSString的length方法返回NSUInteger,在5s下malloc每次都是固定分配9个字节,4s下固定分配5个字节,那么这个szArray在下面循环的时候,几乎必然越界,你应该这么写:malloc(sizeof(unichar) * (strData.length + 1)) |
|
谢谢,确实,因为本来是直接用unichar * strData.length的方法,可能是以前VC做习惯了,直接有错误……
|
|