Objective-C Base64解码返回nil

时间:2013-11-29 00:34:29

标签: objective-c macos cocoa base64

我已下载并将以下类别添加到我的项目中:https://github.com/nicklockwood/Base64

NSString *secret = @"7pgj8Dm6";
NSString *decodedSecret = [secret base64DecodedString];
NSLog(@"decoded Secret = %@", decodedSecret);
然而,这总是证明是零。这里发生了什么?

3 个答案:

答案 0 :(得分:0)

我希望它对你有所帮助

NSString *decodeString = @"Raja";

编码字符串

NSData *encodeData = [decodeString dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64String = [encodeData base64EncodedStringWithOptions:0];
DLog(@"Encode String Value: %@", base64String);

解码字符串

NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:base64String options:0];
NSString *decodedString = [[NSString alloc] initWithData:decodedData encoding:NSUTF8StringEncoding];
DLog(@"Decode String Value: %@", base64String);  

由于

答案 1 :(得分:0)

我无法放松iOS本机base64解码器,使用NSDataBase64DecodingIgnoreUnknownCharacters来处理jwt有效负载 所以我不得不恢复到第三方MF_Base64Codec

可悲的是,你可能想考虑做第三方路线 直到Apple将修复该错误或进一步放宽解码器 接受它目前认为的废话输入

答案 2 :(得分:0)

您的输入7pgj8Dm6是无效的base64编码字符串。因此,结果将始终为零,因为方法base64DecodedString仅用于UTF8 encoding

  

从iOS 7和Mac OS 10.9开始,不再需要this library

您可以使用initWithBase64EncodedString:options:

此方法的默认实现将拒绝非字母字符,包括换行符。要支持不同的编码并忽略非字母字符,请指定选项值NSDataBase64DecodingIgnoreUnknownCharacters