Macos 河豚加密解密

Macos 河豚加密解密,macos,cocoa,Macos,Cocoa,我正在我当前的应用程序中实现河豚算法,我在 #import "NSData+Base64Utilities.h" 我必须添加哪个框架或文件才能删除此错误 我在使用下面的代码,我在遵循正确的方法吗 define PADDING_PHRASE @" " import "CryptoUtilities.h" import "blowfish.h" import "NSData+Base64Utilities.h" @implementation CryptoUtilities +

我正在我当前的应用程序中实现河豚算法,我在

#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];
} 
define PADDING_PHRASE@“
导入“CryptoUtilities.h”
进口“河豚.h”
导入“NSData+Base64Utilities.h”
@加密实用程序的实现
+(NSString*)blowfishEncrypt:(NSData*)messageData usingKey:(NSData*)secretKey
{
NSMutableData*dataToEncrypt=[messageData mutableCopy];
NSMutableData*emptyData=[[PADDING_短语数据使用编码:NSUTF8StringEncoding]mutableCopy];
emptyData.length=8-[dataToEncrypt长度]%8;
//这里我们有数据可以加密
[dataToEncrypt appendData:emptyData];
河豚;
河豚_Init(&ctx,(无符号字符*)[secretKey字节],[secretKey长度];
NSRange-aLeftRange,aRightRange;
NSData*aLeftBox、*aRightBox;
无符号长dl=0,dr=0;
对于(inti=0;i<[dataToEncrypt length];i+=8){//将数据分成八位字节。。。
//…然后变成四重奏
aLeftRange=NSMakeRange(i,4);
aRightRange=NSMakeRange(i+4,4);
aLeftBox=[dataToEncrypt subdataWithRange:aLeftRange];
aRightBox=[dataToEncrypt subdataWithRange:aRightRange];
//将字节转换为无符号长字符
[aLeftBox getBytes:&dl长度:sizeof(无符号长)];
[aRightBox getBytes:&dr长度:sizeof(无符号长)];
//加密
河豚加密(ctx、dl和dr);
//将字节放回
[dataToEncrypt replaceBytesInRange:aLeftRange with bytes:&dl];
[dataToEncrypt replaceBytesInRange:aRightRange with bytes:&dr];
}
返回[dataToEncrypt getBase64String];
} 

NSData+Base64实用程序.h
看起来像是向NSData添加Base64支持的类别的头文件

错误告诉您编译器找不到该类别的文件。您需要将它们添加到项目中

编辑以添加


如果您的目标是iOS7,那么您可以使用处理base64编码的新NSData方法。您不需要使用要查找的类别。

NSData+Base64实用程序。h
看起来像是向NSData添加Base64支持的类别的头文件

错误告诉您编译器找不到该类别的文件。您需要将它们添加到项目中

编辑以添加


如果您的目标是iOS7,那么您可以使用处理base64编码的新NSData方法。您不需要使用您试图查找的类别。

错误是什么?@trojanfoe错误是“未找到文件”,我必须为“NSData+Base64Utilities.h”添加哪个框架或文件?错误是什么?@trojanfoe错误是“未找到文件”,我必须为“NSData+Base64Utilities.h”添加哪个框架或文件?是,你能给我这些文件链接吗,所以我下载并添加这些文件。@QueueOverFlow太棒了:D@QueueOverFlow这不是一个标准的扩展,有几个。由于它们没有相同的实现,您最好使用在代码中使用的相同实现,您似乎从某处找到了它。@QueueOverFlow,您为什么认为Abizern知道从何处获取这些文件?仅仅因为他认识到这个问题并不意味着他知道具体的实施。请自己想想。@QueueOverFlow:你应该问问答案的作者他们推荐的Base64类别。是的,你能给我这些文件链接吗,所以我下载并添加这些文件。@QueueOverFlow太棒了:D@QueueOverFlow这不是一个标准的扩展,有几个。由于它们没有相同的实现,您最好使用在代码中使用的相同实现,您似乎从某处找到了它。@QueueOverFlow,您为什么认为Abizern知道从何处获取这些文件?仅仅因为他认识到这个问题并不意味着他知道具体的实施。请自己想想。@QueueOverFlow:你应该问答案的作者他们推荐的Base64类别是什么。