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(t
、u
或 b
)。这是一个 BouncyCastle 错误。如果您报告它,他们可能会修复它,否则(或直到那时),您必须自己添加回车 return。
有没有办法在 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(t
、u
或 b
)。这是一个 BouncyCastle 错误。如果您报告它,他们可能会修复它,否则(或直到那时),您必须自己添加回车 return。