【发布时间】: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