Java 实现中的 BouncyCastle PGP 文本模式不会转换为 CR/LF

BouncyCastle PGP textmode in Java implementation does not convert to CR/LF

有没有办法在 BouncyCastle PGP 加密 Java 实现中指定文本模式?

我试过了但没有成功(用 UNIX 行结尾加密并在 Windows 中解密):

PGPLiteralDataGenerator pgpldg = new PGPLiteralDataGenerator(false);
OutputStream ldout = pgpldg.open(compout, PGPLiteralData.TEXT, name, data.length, PGPLiteralData.NOW);

RFC 4880, OpenPGP, 5.9. Literal Data Packet (Tag 11) 定义在文本模式下,数据应该用 <CR><LF> 行结尾编码:

Text data is stored with text endings (i.e., network- normal line endings). These should be converted to native line endings by the receiving software.

GnuPG 正在这样做(--compress-algo 0 禁用压缩,--store 只是将输入包装在文字数据包中):

$ echo -e "foo\nbar" | gpg2 --textmode --compress-algo 0 --store | hexdump -c
0000000   � 020   t  [=10=]   X  \b   �   u   f   o   o  \r  \n   b   a   r
0000010  \r  \n                                                        
0000012

通读 BouncyCastle's source code for PGPLiteralDataGenerator 和其他名为 类 的内容,我无法找到 BouncyCastle 正在执行此(必需)转换的任何跟踪。我能找到的只是他们将编码写入 header(tub)。这是一个 BouncyCastle 错误。如果您报告它,他们可能会修复它,否则(或直到那时),您必须自己添加回车 return。