廢話不多說,直接上程式碼
/**
* 異或加密演算法
*
* @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;
}
複製程式碼