废话不多说,直接上代码
/**
* 异或加密算法
*
* @param sourceData 需要加密的字节流
* @param key 加密的key
*
* @return 加密后的字节流
*/
- (NSData *)encodeData:(NSData *)sourceData withKey:(NSString *)key {
NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];
Byte *keyBytes = (Byte *)[keyData bytes]; //取关键字的Byte数组, keyBytes一直指向头部
Byte *sourceDataPoint = (Byte *)[sourceData bytes]; //取需要加密的数据的Byte数组
for (long i = 0; i < [sourceData length]; i++) {
sourceDataPoint[i] = sourceDataPoint[i] ^ keyBytes[(i % [keyData length])]; //然后按位进行异或运算
}
return sourceData;
}