【问题标题】:Encrypting and Decrypting Data in OSX在 OSX 中加密和解密数据
【发布时间】:2013-03-23 15:04:01
【问题描述】:

我正在尝试使用此示例 https://developer.apple.com/library/mac/documentation/security/conceptual/CertKeyTrustProgGuide/iPhone_Tasks/iPhone_Tasks.html#//apple_ref/doc/uid/TP40001358-CH208-SW9 来创建公钥/私钥并在加密一些数据之后。

SecKeyRef publicKey = NULL; // 3

NSData * publicTag = [NSData dataWithBytes:publicKeyIdentifier
                                    length:strlen((const char *)publicKeyIdentifier)]; // 4

NSMutableDictionary *queryPublicKey =
[[NSMutableDictionary alloc] init]; // 5

[queryPublicKey setObject:(id)kSecClassKey forKey:(id)kSecClass];
[queryPublicKey setObject:publicTag forKey:(id)kSecAttrApplicationTag];
[queryPublicKey setObject:(id)kSecAttrKeyTypeRSA forKey:(id)kSecAttrKeyType];
[queryPublicKey setObject:[NSNumber numberWithBool:YES] forKey:(id)kSecReturnRef];
// 6

status = SecItemCopyMatching
((CFDictionaryRef)queryPublicKey, (CFTypeRef *)&publicKey); // 7

在 iOS 上,这可以正常工作。

在 OSX 中,当我调用 SecItemCopyMatching (7) 时,我得到了这个。它是 Apple 提供的示例。我不知道出了什么问题,在 OSX 上查询的某些属性可能需要不同吗?

谢谢

[NSConcreteData _fastCharacterContents]:无法识别的选择器发送到 实例 0x1005440f0

【问题讨论】:

    标签: objective-c macos cocoa encryption


    【解决方案1】:

    您正在 OS X 上尝试 iOS 示例代码,框架相似但不完全相同。

    您可以通过删除 kSecClass 键来避免 _fastCharacterContents 选择器问题,即删除以下代码行,它修复了崩溃问题但无法正常工作

    [queryPublicKey setObject:(id)kSecClassKey forKey:(id)kSecClass];

    有关 Mac OS X 示例,请参阅此问题: Sample code for public key encryption/decryption on Mac?

    【讨论】:

    • 非常感谢您的回答。我会尽力让你知道发生了什么。目前,我没有将其作为已接受的答案进行检查,因此其他人可能会提出其他想法。我提供的示例在顶级 Mac 开发人员库中进行了说明。我猜应该只有iOS。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 2014-09-19
    相关资源
    最近更新 更多