2013-09-20 2 views
0

Я реализую Blowfish алгоритм в моем текущем приложении, я получаю сообщение об ошибке вBlowfish шифрование дешифрование

#import "NSData+Base64Utilities.h" 

который рамки или файл я добавить, чтобы удалить эту ошибку?

Я использую следующий код, Я следую за ним правильно?

define PADDING_PHRASE @"  " 

import "CryptoUtilities.h" 
import "blowfish.h" 
import "NSData+Base64Utilities.h" 

@implementation CryptoUtilities 

+ (NSString *)blowfishEncrypt:(NSData *)messageData usingKey:(NSData *)secretKey 
{ 
NSMutableData *dataToEncrypt = [messageData mutableCopy]; 
NSMutableData *emptyData = [[PADDING_PHRASE dataUsingEncoding:NSUTF8StringEncoding] mutableCopy]; 

emptyData.length = 8 - [dataToEncrypt length] % 8; 

// Here we have data ready to encipher 
[dataToEncrypt appendData:emptyData]; 

BLOWFISH_CTX ctx; 
Blowfish_Init (&ctx, (unsigned char*)[secretKey bytes], [secretKey length]); 

NSRange aLeftRange, aRightRange; 
NSData *aLeftBox, *aRightBox; 
unsigned long dl = 0, dr = 0; 

for (int i = 0; i < [dataToEncrypt length]; i += 8) { // Divide data into octets... 
    // …and then into quartets 
    aLeftRange = NSMakeRange(i, 4); 
    aRightRange = NSMakeRange(i + 4, 4); 

    aLeftBox = [dataToEncrypt subdataWithRange:aLeftRange]; 
    aRightBox = [dataToEncrypt subdataWithRange:aRightRange]; 

    // Convert bytes into unsigned long 
    [aLeftBox getBytes:&dl length:sizeof(unsigned long)]; 
    [aRightBox getBytes:&dr length:sizeof(unsigned long)]; 

    // Encipher 
    Blowfish_Encrypt(&ctx, &dl, &dr); 

    // Put bytes back 
    [dataToEncrypt replaceBytesInRange:aLeftRange withBytes:&dl]; 
    [dataToEncrypt replaceBytesInRange:aRightRange withBytes:&dr]; 
} 

return [dataToEncrypt getBase64String]; 
} 
+0

Что такое ошибка? – trojanfoe

+0

Ошибка @trojanfoe «файл не найден», какой каркас или файл я должен добавить для «NSData + Base64Utilities.h»? – QueueOverFlow

ответ

4

NSData+Base64Utilities.h выглядит как заголовочный файл категории, который добавляет поддержку Base64 для NSData.

Ошибка говорит вам, что компилятор не может найти файлы для категории. Вам нужно добавить их в свой проект.

Edited добавить

Если вы ориентируетесь iOS7, то вы можете использовать новые методы NSData, которые обрабатывают base64 кодирование. Вам не нужно использовать категорию, которую вы пытаетесь найти.

+0

Да, можете ли вы дать мне эти ссылки на файлы, поэтому я загружаю их и добавляю эти файлы. – QueueOverFlow

+2

@QueueOverFlow Это блестяще: D – trojanfoe

+2

@QueueOverFlow Это не стандартное расширение, и есть пара из них. Поскольку у них нет одинаковых реализаций, вам лучше использовать тот же, который используется в этом коде, который вы, кажется, нашли где-то. – Abizern

Смежные вопросы