iOS DeveloperIOS程序员

iOS 异或加密(XOR)

2016-11-02  本文已影响2770人  阶前梧叶

原文链接
源码见文末

异或简介

应用场景

异或加密原理

异或加密应用

iOS代码实现

// 客户端内置私钥
static NSString const *privateKey = @"ef37c9111210854f5986fc9ebb5548b2ae";

@implementation NSData(XOREncrypt)
- (NSData *)xor_decrypt
{
    return [self xor_encrypt];
}

// 加密
- (NSData *)xor_encrypt
{
    // 获取key的长度
    NSInteger length = privateKey.length;

    // 将OC字符串转换为C字符串
    const char *keys = [privateKey cStringUsingEncoding:NSASCIIStringEncoding];

    unsigned char cKey[length];

    memcpy(cKey, keys, length);

    // 数据初始化,空间未分配 配合使用 appendBytes
    NSMutableData *encryptData = [[NSMutableData alloc] initWithCapacity:length];

    // 获取字节指针
    const Byte *point = self.bytes;

    for (int i = 0; i < self.length; i++) {
        int l = i % length;                     // 算出当前位置字节,要和密钥的异或运算的密钥字节
        char c = cKey[l];
        Byte b = (Byte) ((point[i]) ^ c);       // 异或运算
        [encryptData appendBytes:&b length:1];  // 追加字节
    }
    return encryptData.copy;
}
@end

思考题

int a = 15;
int b = 20;

不用第三个变量,交换两个变量的值?

int a = 15;
int b = 20;

a = a ^ b;
b = a ^ b;
a = a ^ b;


源码

XORDemo源码

上一篇下一篇

猜你喜欢

热点阅读