可以删除Base64编码中的换行符

Atu*_*man 40 java base64

我的java应用程序使用base64编码,它\n在每76个字符后放置一个新的line().我需要将此编码的字符串放在属性文件中,换行符会破坏功能.

当我做的encodedString.replaceAll("\n", "");事情工作正常,但我只是想确保这是预期的,我不会引入一个隐藏的问题.

Rol*_*lig 46

对于许多无法处理长行的旧程序,必须将base64编码的字符串分成多行.用Java编写的程序通常可以处理长行,因为它们本身不需要进行内存管理.只要您的行短于6400万个字符就应该没有问题.

而且由于您不需要换行符,如果可能的话,您根本不应该生成换行符.

  • @Pankaj_Nimgade使用Base64.NO_WRAP标志. (17认同)
  • 更新:在Java 8中,使用`java.util.Base64`._Basic_和_URL以及Filename safe_ encoders不添加行分隔符.详情[这里](http://docs.oracle.com/javase/8/docs/api/java/util/Base64.html) (2认同)
  • 要解码包含字符串的换行符,应使用 java.util.Base64.getMimeDecoder().decode(message) 。 (2认同)

ael*_*ton 6

一些Base64编码器将诸如CRLF('\ r \n')之类的EOL字符附加到编码字符串.您可以使用Base64.encodeBase64URLSafe来摆脱它们:

使用base64算法的URL安全变体对二进制数据进行编码,但不会对输出进行分块.url-safe变体发出 - 而_而不是+和/字符.注意:不添加填充.

  • 使用 URL 和文件名安全字母表的 Base64 编码称为“base64url”,并在 RFC 4648 §5 中定义:https://tools.ietf.org/html/rfc4648#section-5 (2认同)

Suj*_*eet 5

您只需要按以下方式使用 Base64 编码

Base64.encodeBase64String("Your data to encrypt in base64")
Run Code Online (Sandbox Code Playgroud)

将上面的行更改为以下内容

Base64.encodeBase64String("Your data to encrypt in base64",Base64.NO_WRAP)
Run Code Online (Sandbox Code Playgroud)

这将解决您的问题。