Ios 在staticLibrary中加密字符串时出错

Ios 在staticLibrary中加密字符串时出错,ios,ios5,encryption,ios4,ios-simulator,Ios,Ios5,Encryption,Ios4,Ios Simulator,在我的应用程序中,我使用加密和解密 在将字符串输入到本地数据库之前,我对其进行加密,从数据库中获取数据之后,我对其进行解密并在应用程序中使用。 它工作得很好。我使用了来自的加密/解密 加密时: NSString *myKey=@"any string more than 8 char"; NSData *data ; NSData *encryptedData; NSString *encryptPassword,*encryptPasscode;

在我的应用程序中,我使用加密和解密

在将字符串输入到本地数据库之前,我对其进行加密,从数据库中获取数据之后,我对其进行解密并在应用程序中使用。 它工作得很好。我使用了来自的加密/解密

加密时:

    NSString *myKey=@"any string more than 8 char";

    NSData *data ; 
    NSData *encryptedData; 
    NSString *encryptPassword,*encryptPasscode;

    // 1) Encrypt

    data = [password dataUsingEncoding: NSASCIIStringEncoding];
    encryptedData = [data AESEncryptWithPassphrase:myKey];

    // 2) Encode Base 64

    [Base64 initialize];
    encryptPassword = [Base64 encode:encryptedData];
    NSData *decryptedData;
    NSData  *b64DecData;

    field1 = (char *) sqlite3_column_text(selectPasscodeStatement, 0);
    NSString *fieldStr1 = [[NSString alloc] initWithUTF8String: field1];

     // 3) Decode Base 64

      b64DecData = [Base64 decode:fieldStr1];

     // 4) Decrypt

       decryptedData = [b64DecData AESDecryptWithPassphrase:myKey];

       retrivedPasscode = [[NSString alloc] initWithData:decryptedData encoding:NSASCIIStringEncoding];
解密时:

    NSString *myKey=@"any string more than 8 char";

    NSData *data ; 
    NSData *encryptedData; 
    NSString *encryptPassword,*encryptPasscode;

    // 1) Encrypt

    data = [password dataUsingEncoding: NSASCIIStringEncoding];
    encryptedData = [data AESEncryptWithPassphrase:myKey];

    // 2) Encode Base 64

    [Base64 initialize];
    encryptPassword = [Base64 encode:encryptedData];
    NSData *decryptedData;
    NSData  *b64DecData;

    field1 = (char *) sqlite3_column_text(selectPasscodeStatement, 0);
    NSString *fieldStr1 = [[NSString alloc] initWithUTF8String: field1];

     // 3) Decode Base 64

      b64DecData = [Base64 decode:fieldStr1];

     // 4) Decrypt

       decryptedData = [b64DecData AESDecryptWithPassphrase:myKey];

       retrivedPasscode = [[NSString alloc] initWithData:decryptedData encoding:NSASCIIStringEncoding];
但我已经为同一个项目创建了静态库。我正在另一个项目中使用该静态库。当我运行该项目时,在加密时,它给了我下面的错误

-[nsConcreteModableData AESCEncryptWithPassphrase:]:无法识别的选择器发送到实例0x6a3fe40


是否导入了类别头文件:

#import "NSData-AES.h"
我相信有
方法定义了密码短语。否则,应用程序将不知道该方法


只是澄清一下-您必须将类别头文件导入到您希望使用该类别添加的功能的每个文件。

您需要更改项目的生成设置,该设置将链接静态库与主项目。 遵循以下步骤:

1) 单击“生成设置”选项卡

2) 搜索“其他链接器标志”

3) 向其添加“-all_load”标志

4) 构建并运行项目

它对我来说效果很好。

->是的,我在staticLibrary和当前项目中都包含了导入“NSData AES.h”。我不知道它是如何调用[nsContectEmulableData]函数EncryptWithPassphrase:]