【问题标题】:Why is base64 encoding my file on a Mac not resulting in a proper base64 string?为什么在 Mac 上对我的文件进行 base64 编码不会产生正确的 base64 字符串?
【发布时间】:2018-11-10 21:21:09
【问题描述】:

我使用的是 Mac OS 10.13.3。我正在尝试对二进制文件进行 base64 编码,但遇到了一些问题。具体来说,我认为所有 base64 编码文件的长度都必须是 4 的倍数。但是,当我对文件进行编码时,请注意长度不能被 4 整除 ...

localhost:lib davea$ openssl base64 -in myfile.binary -out ~/Downloads/myfile.base64
localhost:lib davea$ ls -al ~/Downloads/myfile.base64 
-rw-r--r-- 1 davea staff 93162 May 31 14:22 /Users/davea/Downloads/myfile.base64

另外,当我查看base64文件的内容时,没有看到结尾的传统“=”或“==”,这通常表示填充

localhost:lib davea$ cat ~/Downloads/myfile.base64
...
C9vgMjoKSQYkXMLTrGKRleR558g3bY3VTqlsVvTqZXquCLp4JS4cprTG6N10H0u9
i4pwPrVmSAP2DmE1V7mGwR2e4fiYEWnZjpSbHofpzlUo34yhiQ2/5kJoQZktD7BU
uxYBAgQIECBAgBs2

是我做错了什么,还是有其他方法可以对我的文件进行 base64 编码?

【问题讨论】:

  • 您的文件大小不是您所期望的,因为您没有考虑文件中的行尾字符。输入文件中的每 48 个字符将有 64 个字符的输出 + 回车或换行,具体取决于您在哪个系统上执行此操作。无论如何,最后一行还有一个行尾字符。所以减去ceiling( length_of_input_file / 48 )ceiling( length_of_output_file / 64 )后文件大小应该总是4的倍数
  • 嗨@Jason,我问的原因是因为当我尝试使用 JS 库 (github.com/beatgammit/base64-js) 解码我的文件时,该库抱怨我的文件长度不是多个四个,考虑到我列出的内容,这是有道理的。那么查看base64编码字符串长度的正确方法是什么?
  • 我的第一条评论中的计算不正确。应该是:...减去 ceiling( length_of_input_file / 76 )ceiling( length_of_output_file / 64 ) 后的 4 的倍数

标签: string bash macos encoding base64


【解决方案1】:

好的。我相信我们对此想得太多了。以下是您要获得所需行为的内容:

openssl base64 -A -in myfile.binary -out ~/Downloads/myfile.base64

这将转换为base64,没有任何行尾。 -A 选项有什么诀窍。

【讨论】:

    【解决方案2】:

    我是不是做错了什么,

    没有

    或者还有其他方法可以对我的文件进行 base64 编码吗?

    是的,您可以使用base64。它需要一个参数来指定行长,但在其他方面类似,相当于你的命令是:

    base64 -b 64 -i myfile.binary -o ~/Downloads/myfile.base64
    

    另外,当我查看base64文件的内容时,我没有看到结尾的传统“=”或“==”,这通常表示填充

    Base64 将 3 个输入字节映射到 4 个输出字节。您的文件是 93162 字节,可以被 3 整除,因此不需要填充。

    HTH

    【讨论】:

    • 我在运行上述命令时收到“base64: invalid option -- 'b'”错误。我在 MacOS X 和 Cent OS 7 上都试过了。
    • 嗯,一定是我的系统有问题。我将不得不进一步调查。
    猜你喜欢
    • 2012-02-13
    • 2019-08-19
    • 2019-07-11
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    相关资源
    最近更新 更多