为什么在Mac上对我的文件进行base64编码而不会产生正确的base64字符串?

时间:2018-05-31 19:27:17

标签: string bash macos encoding base64

我使用的是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编码?

2 个答案:

答案 0 :(得分:1)

  

我做错了什么,

没有

  

还是有另一种方法对我的文件进行base64编码吗?

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

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

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

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

HTH

答案 1 :(得分:1)

行。我相信我们过度思考了这一点。以下是您希望获得所需行为的内容:

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

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