为什么这些base64编码输出在给定相同的输入字符串时会有所不同?

use*_*331 -1 javascript groovy base64 gnu go

当从相同的输入字符串获取bas64编码的字符串时,我发现JavaScript,Groovy和Go具有相同的结果,但GNU base64略有不同.这是为什么?

JavaScript(nodejs v0.10.33):

new Buffer('Laurence Tureaud is Mr. T').toString('base64');
TGF1cmVuY2UgVHVyZWF1ZCBpcyBNci4gVA==
Run Code Online (Sandbox Code Playgroud)

Groovy(Java 8上的2.3.7):

'Laurence Tureaud is Mr. T'.bytes.encodeBase64().toString()
TGF1cmVuY2UgVHVyZWF1ZCBpcyBNci4gVA==
Run Code Online (Sandbox Code Playgroud)

去(1.4):

b64.StdEncoding.EncodeToString([]byte("Laurence Tureaud is Mr. T"))
TGF1cmVuY2UgVHVyZWF1ZCBpcyBNci4gVA==
Run Code Online (Sandbox Code Playgroud)

GNU base64(带有UTF-8术语字符集的GNU coreutils 8.12.197-032bb):

echo 'Laurence Tureaud is Mr. T' | base64
TGF1cmVuY2UgVHVyZWF1ZCBpcyBNci4gVAo=
Run Code Online (Sandbox Code Playgroud)

小智 7

echo 'Laurence Tureaud is Mr. T'

Echo在字符串后添加换行符.

请尝试以下操作删除换行符:

echo -n 'Laurence Tureaud is Mr. T' | base64

你得到了 TGF1cmVuY2UgVHVyZWF1ZCBpcyBNci4gVA==