求优化和指导一个非常简单的逻辑异或加密函数

iOS 码拜 10年前 (2015-05-02) 1183次浏览 0个评论

这个是我进行TCP通讯时的一个非常简单的加密函数,参数1是加密数据(待解密的数据),参数2是加密的代码
但是,发现TCP数据量大的时候速度是一个问题,貌似还会出现内存问题,求指导
注意,需要考虑中文等字符串的传输,所以用了unichar


-(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做习惯了,直接有错误……

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求优化和指导一个非常简单的逻辑异或加密函数
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!