我目前正在尝试让一个小型肥皂客户端工作,其中包括在请求的 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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)