我目前正在尝试让一个小型肥皂客户端工作,其中包括在请求的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); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。