iOS上的Base64编码最后缺少填充

Posted

技术标签:

【中文标题】iOS上的Base64编码最后缺少填充【英文标题】:Base64 encoding on iOS missing padding at the end 【发布时间】:2015-01-12 20:41:06 【问题描述】:

我需要将身份验证标头发送到服务器。服务器正在使用基本身份验证,因此它期待“身份验证:基本编码用户:通过”。我在 *** 上找到了如何将字符串编码和解码为 Base64:

NSData *plainData = [plainString dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64String = [plainData base64EncodedStringWithOptions:0];
NSLog(@"%@", base64String);

如果我用它编码“test:test”,它会返回:dGVzdDp0ZXN0

问题是我的服务器期望收到:dGVzdDp0ZXN0DQo=

我的编码方式有什么问题?最后一个DQo= 是填充?我怎么得到那个填充物?!

谢谢!

【问题讨论】:

【参考方案1】:
dGVzdDp0ZXN0DQo= is "test:test\r\n"

您的输入缺少回车/换行。

您可以通过谷歌搜索在网络上轻松找到 base64 解码器。例如

www.base64decode.org

【讨论】:

以上是关于iOS上的Base64编码最后缺少填充的主要内容,如果未能解决你的问题,请参考以下文章

Base64编码学习

如果输入长度不能被 3 整除,为啥 base64 编码需要填充?

密码学Base64 编码 ( Base64 简介 | Base64 编码原理 | 最后编码组字节不足时补位 ‘=‘ 符号 | Base64 编码实现参考 )

Base64编码

Base64编码及iOS中的Base64

ios开发Base64编码以及加密相关学习