找不到kSecRandomDefault?

3 encryption cocoa aes objective-c commoncrypto

我在Mac OS 10.7上使用CommonCrypto进行加密.这个框架不是内置的吗?当我生成随机数据时:

+ (NSData *)randomDataOfLength:(size_t)length {
NSMutableData *data = [NSMutableData dataWithLength:length];

int result = SecRandomCopyBytes(kSecRandomDefault, 
                                length,
                                data.mutableBytes);
NSAssert(result == 0, @"Unable to generate random bytes: %d",
         errno);

return data;

}
Run Code Online (Sandbox Code Playgroud)

我得到错误使用未声明的标识符kSecRandomDefault,我相信它是在CommonCrypto中声明的.

谢谢,非常感谢所有帮助.

Jas*_*oco 11

它的定义是SecRandom.h.确保您已Security在项目中包含框架并添加适当的头文件.它不包含在框架默认标题中(我不确定这是一个过度站点还是故意的).因此,将以下导入添加到您的实现文件中:

#import <Security/SecRandom.h>
Run Code Online (Sandbox Code Playgroud)