objective-c - 如何在 Cocoa/Objective-C 中将文件编码和解码为 Base64

标签 objective-c cocoa base64 xcode4.3

我目前正在尝试让一个小型 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/

相关文章:

php - 如何加密 PHP 脚本的一部分

javascript - 加载远程图像,然后转换为 Base64 字符串客户端进行缓存

iphone - UIImage 在 UIDatepicker 上未正确对齐(仅在设备中)

ios - 在 iPhone 上将照片保存到磁盘的最有效内存方式?

objective-c - 是否有必要为 NSTextFieldCell 子类实现所有初始化器?

swift - 重写绑定(bind)方法 (Swift) - 错误 : Value of type 'Any' has no member 'addObserver'

objective-c - 在 XCode + Objective-C 中链接用 C 编写的库

iphone - UISlider 控制 AVAudioPlayer

objective-c - 使用 ARC 临时保留对象的最佳方法

Java将十六进制转换为Base64