我正在查看一些创建可变数据对象并将 SHA1 哈希放入其中的代码。如果我初始化目标可变数据对象
CFMutableDataRef hashDataRef = (CFMutableDataRef)[[NSMutableData alloc] initWithLength:SHA_DIGEST_LENGTH];
一切正常。如果我将那一行更改为
CFMutableDataRef hashDataRef = CFDataCreateMutable(kCFAllocatorDefault, SHA_DIGEST_LENGTH);
它会中断(在 SHA1 命令之后,可变数据对象似乎仍然为空)。在这两种情况下,创建之后的行hashDataRef
是
SHA1(CFDataGetBytePtr(inputDataRef), CFDataGetLength(inputDataRef), CFDataGetMutableBytePtr(hashDataRef));
我没想到两者之间会有任何区别,但显然我错过了一些东西。在不使用 NSMutableData 和免费桥接的情况下,是否有适当的 Core Foundation 方法来获取我想要的可变数据对象?