Kai*_*ern 8 cocoa base64 objective-c xcode4.3
我目前正在尝试让一个小型肥皂客户端工作,其中包括在请求的xml中发送证书文件.
我将文件导入NSData对象没有问题 - 但我必须将其转换为某些Base64字符串.环境是Mac OSX,Xcode 4.3.
我发现很多旧的帖子都在处理 - 但我发现最好的是一些使用OpenSSL库的代码,其中包含大量已弃用的方法.
所以,我的问题如下:有没有比使用OpenSSL库更好的方法?如果是,您是否有一些URL或更新的代码片段?
如果不是,我想有一些项目可以推荐使用Base64.毕竟Base64并不罕见.
谢谢你的帮助!
den*_*342 11
这是使用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);
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是iOS 7或OS X 10.9 SDK,则可以使用NSData的新base64功能.
如果您使用的是较旧的SDK,只需添加此声明即可获得NSData base64编码和解码.这适用于iOS 4+和OS X 10.7+.
#ifndef __IPHONE_7_0
@interface NSData (NSDeprecated)
- (id)initWithBase64Encoding:(NSString *)base64String NS_DEPRECATED(10_6, 10_9, 4_0, 7_0);
- (NSString *)base64Encoding NS_DEPRECATED(10_6, 10_9, 4_0, 7_0);
@end
#endif
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11489 次 |
最近记录: |