Base64编码在Linux CentOS终端和Java中给出了不同的结果

Jon*_*tra 2 java linux base64

我正在尝试在Linux CentOS上生成一些随机密码,并将其作为base64存储在数据库中。密码是“ KQ3h3dEN”,当我用“ echo KQ3h3dEN”转换时| base64”,因此我将获得“ S1EzaDNkRU4 K ”。我在Java中有功能:

public static String encode64Base(String stringToEncode)
{
    byte[] encodedBytes = Base64.getEncoder().encode(stringToEncode.getBytes());
    String encodedString = new String(encodedBytes, "UTF-8");

    return encodedString;
}
Run Code Online (Sandbox Code Playgroud)

并且encode64Base(“ KQ3h3dEN”)的结果为'S1EzaDNkRU4 ='。

因此,在此示例中,它将添加“ K”而不是“ =“。当在Linux上使用base64和在Java中使用base64编码时,如何确保我将始终获得相同的结果?

更新:更新了问题,因为我在Linux编码字符串的末尾没有注意到“ K”。此外,这里还有一些其他示例:

  • 'echo KQ3h3dENa | base64'=> result ='S1EzaDNkRU5hCg ==',但应为'S1EzaDNkRU5h'
  • 回声KQ3h3dENaa | base64'=> result ='S1EzaDNkRU5hYQo =',但应为'S1EzaDNkRU5hYQ =='

Jon*_*tra 5

经过几个小时的实验,找到了解决方案。似乎将新行添加到了我要编码的字符串中。解决方案是:echo -n KQ3h3dEN | base64

结果将与java base64编码相同。