Ios 通过指针地址修改只读NSData是否安全?
我想对NSData执行如下XOR操作,这样修改只读NSData(非ARC)安全吗?我试过了,它确实奏效了Ios 通过指针地址修改只读NSData是否安全?,ios,nsdata,xor,Ios,Nsdata,Xor,我想对NSData执行如下XOR操作,这样修改只读NSData(非ARC)安全吗?我试过了,它确实奏效了 @implementation NSData (Additions) - (void)xorWithByteKey:(Byte)keyByte { char *curDataPtr = (char *)self.bytes; for (int x = 0; x < self.length; x++) {
@implementation NSData (Additions)
- (void)xorWithByteKey:(Byte)keyByte
{
char *curDataPtr = (char *)self.bytes;
for (int x = 0; x < self.length; x++)
{
*curDataPtr = *curDataPtr ^ keyByte;
curDataPtr++;
}
}
@end
@实现NSData(添加)
-(void)xorWithByteKey:(字节)keyByte
{
char*curDataPtr=(char*)self.bytes;
对于(int x=0;x
可以肯定地说,这是一个绝对愚蠢的想法,会给你带来各种各样的麻烦。首先,猜猜如果你有一个原始的NSData对象并复制了它会发生什么,然后尝试这种胡说八道(如果它一开始没有崩溃的话)。我认为由此造成的任何损害都属于“故意”的范畴,这意味着你可能要承担个人责任 从一个角度看,你所做的似乎是安全的。我快速搜索了\u字节(这是您直接访问的内容)的引用,但没有发现任何问题
尽管如此,您真的想冒险依赖这样一个实现细节吗?在您的代码中,通过NSMutableData副本修改数据是否成本过高
与此类别相同(警告,未测试):
接口NSData(xoring)
-(NSData*)xorWithByteKey:(字节)b;
@结束
@实现NSData(xoring)
-(NSData*)xorWithByteKey:(字节)b{
NSMutableData*copy=[self-mutableCopy];
char*p=(char*)copy.bytes;
对于(整数i=0,长度=copy.length;i
@结束
@interface NSData (xoring)
- (NSData *) xorWithByteKey: (Byte) b ;
@end
@implementation NSData (xoring)
- (NSData *) xorWithByteKey: (Byte) b {
NSMutableData * copy = [self mutableCopy] ;
char *p = (char *)copy.bytes;
for (NSUInteger i = 0, length = copy.length ; i < length; ++i) {
Byte c = *p ;
c ^= b ;
*p++ = c ;
}
return copy ;
}