iOS-异或加密

作者: chernyog | 来源:发表于2016-03-16 12:19 被阅读1121次

    iOS-异或加密

    原理

    对待加密数据的每个二进制字节,做异或操作(就是把原来的0变成1,1变成0),从而达到加密的目的。

    简单实现

    宏定义(形式上简化代码)

    #define StringWithData(data) [[NSString alloc] initWithData:(data) encoding:NSUTF8StringEncoding]
    #define DataWithString(str) [(str) dataUsingEncoding:NSUTF8StringEncoding]
    

    核心方法

    - (NSData *)encrypt:(NSData *)data {
        char *dataP = (char *)[data bytes];
        for (int i = 0; i < data.length; i++) {
    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Wunsequenced"
            *dataP = *(++dataP) ^ 1;
    #pragma clang diagnostic pop
        }
        return data;
    }
    

    测试一下

    NSString *str = @"iOS-简单的异或加密";
        
    NSData *originalData = DataWithString(str);
    NSString *encryptStr = StringWithData([self encrypt:originalData]);
    
    NSData *encryData = DataWithString(encryptStr);
    NSString *decryptStr = StringWithData([self encrypt:encryData]);
    
    NSLog(@"原始值:%@", str);
    NSLog(@"加密后:%@", encryptStr);
    NSLog(@"解密后:%@", decryptStr);
    
    // 输出
    2016-03-16 11:54:10.191 异或加密[5756:143913] 原始值:iOS-简单的异或加密
    2016-03-16 11:54:10.192 异或加密[5756:143913] 加密后:iNR,毁䌔曅佃牗䋡䮇
    2016-03-16 11:54:10.192 异或加密[5756:143913] 解密后:iOS-简单的异或加密
    

    Demo下载链接

    https://github.com/chernyog/iOS-XOR-Encryption

    相关文章

      网友评论

      • Zoneday:你的原理这么说不严谨吧,异或加密是一种二进制运算方式,每一个字符与密钥进行匹配,相等是0,不等是1
        chernyog:嗯,是的,这里密钥简单处理了,就是1。
      • qqzysh:你的这个只能异或1 到4的正整数, 作为网络加密 太容易破解了吧
        chernyog:嗯,它不用于网络加密,适用于客户端某类字段简单的加密处理,避免普通用户直接能看到明文。

      本文标题:iOS-异或加密

      本文链接:https://www.haomeiwen.com/subject/yrvqlttx.html