iOS 自定义加密方式及格式转换

1096 查看

最近跟加密杠上了,这里先说说base64加密,后续会继续增加各种加密方式

1、base64 + “KEY” 异或加密

简单的base64加密这里就不介绍了,主要都是使用第三方库“CTMBase64” ,一段代码搞定

[string base64EncodedString];

重点的是在明文添加一个“KEY”字符串并进行异或运算,得出另外一个字符串,然后再进行base64加密。因为base64加密是可逆的(MD5加密不可逆),很容易就泄漏密码,不安全,所以一般都是跟后台商量好一定的法则,在原来的基础上添加或者重新排序的方法对明文进行变更...
代码如下:

#pragma mark - base64 + KEY 加密
- (NSString *)encodeString:(NSString *)sourceString withKey:(NSString *)keyString{
    if ([sourceString isEqualToString:@""]||[keyString isEqualToString:@""]) {
        return @"";
    }
    //密码转字节数组
    NSData *source = [sourceString dataUsingEncoding:NSUTF8StringEncoding];
    Byte *sourceBytes = (Byte *)[source bytes];
    //KEY转字节数组
    NSData *key = [keyString dataUsingEncoding:NSUTF8StringEncoding];
    Byte *keyBytes = (Byte *)[key bytes];
    //异或运算
    int i=0;
    int j=0;
    for (; i<source.length; j++) {
        if (j==key.length){
            j=0;
        }
        sourceBytes[i] = sourceBytes[i]^keyBytes[j];
        i++;
    }
    //对密文与KEY异活运算得出的字符串进行base64加密
    NSData *resultData = [[NSData alloc]initWithBytes:sourceBytes length:source.length];
    return [resultData base64EncodedString];
}

特别感谢以下博客的内容:
http://blog.csdn.net/wscqqlucy/article/details/8268412