廢話不多說,直接上代碼
/**
* 異或加密算法
*
* @param sourceData 需要加密的字節(jié)流
* @param key 加密的key
*
* @return 加密后的字節(jié)流
*/
- (NSData *)encodeData:(NSData *)sourceData withKey:(NSString *)key {
NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];
Byte *keyBytes = (Byte *)[keyData bytes]; //取關(guān)鍵字的Byte數(shù)組, keyBytes一直指向頭部
Byte *sourceDataPoint = (Byte *)[sourceData bytes]; //取需要加密的數(shù)據(jù)的Byte數(shù)組
for (long i = 0; i < [sourceData length]; i++) {
sourceDataPoint[i] = sourceDataPoint[i] ^ keyBytes[(i % [keyData length])]; //然后按位進(jìn)行異或運(yùn)算
}
return sourceData;
}