iOS 自定义加密解密——解密

来源:互联网 发布:比较好的php编辑器 编辑:程序博客网 时间:2024/06/12 00:13

#pragma mark - 解密

#pragma mark - 将十六进制转化为二进制

- (void)unlokHexStringTranslateToBinaryString:(NSString *)hexString{

    

    NSString *binaryString=[[NSStringalloc] init];

    

    for (int i =0; i < [hexString length]; i++) {

        

        NSRange rage;

        

        rage.length =1;

        rage.location = i;

        NSString *key = [hexStringsubstringWithRange:rage];

        binaryString = [NSStringstringWithFormat:@"%@%@",binaryString,[NSStringstringWithFormat:@"%@",[self.setSecretDicobjectForKey:key]]];

        

    }

    

    NSLog(@"解密转化后的二进制为:\n%@",binaryString);

    

    [selfunlokChangeBinaryString:binaryString];

}


#pragma mark - 移位(改变二进制数的某一个或某几个位)

- (void)unlokChangeBinaryString:(NSString *)binaryString{

    

    NSMutableArray *binaryArray = [[NSMutableArrayalloc] init];

    for (int i=0; i<[binaryStringlength]; i++) {

        

        NSRange rage;

        rage.length =1;

        rage.location = i;

        NSString *character = [binaryStringsubstringWithRange:rage];

        [binaryArray addObject:character];

    }

    

    [binaryArray exchangeObjectAtIndex:0withObjectAtIndex:binaryArray.count-1];

    

    NSString *newBinaryString =@"";

    for (NSInteger i =0; i < binaryArray.count; i++) {

        

        newBinaryString = [newBinaryString stringByAppendingFormat:@"%@",[binaryArrayobjectAtIndex:i]];

    }

    

    //newBinaryString就是移位后的数据

    NSLog(@"解密移位后的二进制为:\n%@",newBinaryString);

    

    [selfunlokBinaryStringToHexString:newBinaryString];

}


#pragma mark - 二进制转为十六进制字符串

- (void)unlokBinaryStringToHexString:(NSString *)newBinaryString{

    

    NSString *hexString=@"";

    

    for (int i=0; i<[newBinaryStringlength]/4; i++) {

        

        NSRange rage;

        rage.length =4;

        rage.location = i*4;

        NSString *key = [newBinaryStringsubstringWithRange:rage];

        

        hexString = [NSStringstringWithFormat:@"%@%@",hexString,[NSStringstringWithFormat:@"%@",[self.removeSecretDicobjectForKey:key]]];

        

    }

    

    NSLog(@"解密二进制字符串转为十六进制字符串:\n%@",hexString);

    

    [selfstringFromHexString:hexString];

    

}

#pragma mark - 十六进制转为普通字符串

- (void)stringFromHexString:(NSString *)hexString {//

    

    char *fistBuffer = (char *)malloc((int)[hexStringlength] / 2 +1);

    bzero(fistBuffer, [hexStringlength] / 2 +1);

    for (int i =0; i < [hexString length] - 1; i +=2) {

        

        unsignedint anInt;

        NSString * hexChar = [hexStringsubstringWithRange:NSMakeRange(i,2)];

        

        NSScanner * scanner = [[NSScanneralloc] initWithString:hexChar];

        [scanner scanHexInt:&anInt];

        fistBuffer[i / 2] = (char)anInt;

    }

    

    NSString *normalString = [NSStringstringWithCString:fistBufferencoding:NSUTF8StringEncoding];

    NSLog(@"解密十六进制转为普通字符串:\n%@",normalString);


}

0 0
原创粉丝点击