AAA
BBB
CCC
或
AAA\n\rBBB\n\rCCC\n\r
是否与以下相同?
AAABBBCCC
#1 楼
我假设您的意思是基数为64的密钥文件,因为从二进制文件中删除换行符显然会破坏事情。实际上,就像OpenPGP密钥(RFC 4880)一样,它们通常使用否则过时的PEM标准(RFC 1421)在base 64中进行编码。PEM可打印编码部分说:
为了表示PEM消息的封装文本,将encoding
函数的输出定界为文本行(使用local
约定),除最后一行完全包含64
可打印字符,最后一行包含64个或更少的可打印字符。
OpenPGP基数64部分说:
编码的输出流必须以不超过76个字符的行表示。
另一方面,对于SSH,RFC 4716第3节:
密钥文件是一个文本文件,包含一系列行。文件中的每一行
不得超过72个8位字节,不包括行
终止符。
实践中的实现接受更长的时间吗?线?我希望许多人这样做。但是,虽然不会丢失任何信息,但是使用这种编码在技术上是不合格的。
评论
$ \ begingroup $
4880指出MIME 2405也表示76,而不是较早的1421说64; PGP和PEM的BEGIN和END虚线是虚线,而MIME具有其他边界。与SSH更相关的是4716,它引用了全部三个,但指定了不同的BEGIN / END行和内部标头以及最大宽度72。无关但相似的是,OpenSSL具有与SSH相同的许多加密原语,并且在许多事情上使用了标称PEM。在大多数情况下,它写入64个字符(每1421个字符),读取76个字符(每2405个字符),并且无声地删除任何内容,尽管最近在开发者列表上已经讨论了解决此问题的方法。
$ \ endgroup $
–dave_thompson_085
2014-09-10 6:53
$ \ begingroup $
@ dave_thompson_085,我错过了ssh标签。如果问题是关于SSH的,那么4716确实是最相关的。
$ \ endgroup $
–otus
2014-09-10 8:49
$ \ begingroup $
不知道为什么Q在2019年仍然有效,但自从它生效以来:2015年rfc7468重新指定了'PEM'格式-仍然用64行折断。2016-08年的OpenSSL 1.1.0确实可以读取行长超过76,但仍不是无限。当然不是SSH格式。
$ \ endgroup $
–dave_thompson_085
19年8月24日在5:25