iOS异或加密算法

1,421 阅读1分钟

废话不多说,直接上代码

/**
 *  异或加密算法
 *
 *  @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;
}