我目前正在尝试让一个小型 soap 客户端工作,其中包括在请求的 xml 中发送证书文件。
我可以毫不费力地将文件放入 NSData 对象中 - 但随后我必须将其转换为一些 Base64 字符串。环境为Mac OSX,Xcode 4.3。
我发现很多旧帖子都在处理这个问题 - 但我发现的最好的是一些使用 OpenSSL 库的代码,其中包含大量已弃用的方法。
所以,我的问题如下: 有没有比使用 OpenSSL 库更好的方法? 如果是,您是否有一些 URL 或更新的代码碎片?
如果没有,我想有一些可以推荐的处理 Base64 的项目。毕竟 Base64 并不少见。
感谢您的帮助!
最佳答案
这是使用 CommonCrypto 完成的 base64 编码:
很简单的代码,不难归类
如果你将它添加到你的项目中,你还需要添加 Security.framework
#include <CoreFoundation/CoreFoundation.h>
#include <Security/Security.h>
static NSData *base64helper(NSData *input, SecTransformRef transform)
{
NSData *output = nil;
if (!transform)
return nil;
if (SecTransformSetAttribute(transform, kSecTransformInputAttributeName, input, NULL))
output = (NSData *)SecTransformExecute(transform, NULL);
CFRelease(transform);
return [output autorelease];
}
NSString *base64enc(NSData *input)
{
SecTransformRef transform = SecEncodeTransformCreate(kSecBase64Encoding, NULL);
return [[[NSString alloc] initWithData:base64helper(input, transform) encoding:NSASCIIStringEncoding] autorelease];
}
NSData *base64dec(NSString *input)
{
SecTransformRef transform = SecDecodeTransformCreate(kSecBase64Encoding, NULL);
return base64helper([input dataUsingEncoding:NSASCIIStringEncoding], transform);
}
关于objective-c - 如何在 Cocoa/Objective-C 中将文件编码和解码为 Base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11386876/