给定一个在 PEM 内编码的任意(有效!)私钥或公钥,带有 pre-encapsulation boundary
和 post-encapsulation boundaries
完好无损,是否有可能确切知道字节采用什么格式(即它们是传统的 OpenSSL、PKCS8、X.509 SubjectPublicKeyInfo
等),还是需要一些先验信息来正确解码它们?
最佳答案
对于证书,情况几乎很简单——边界线指定了预期的内容(证书或私钥)。
在 OpenPGP 装甲数据中,边界线还会告诉您预期的内容 - key 或数据。
由多个 SSH 应用程序创建的 SSH key 具有相同的边界线,但 key 本身的格式不同。因此,您需要尝试以所有预期格式读取数据。
RSA 公钥通常采用 RSA 1.5 格式,因此您可以假设您有一个 RSA key 。
PKCS#12 通常不会包装到 PEM(我从未见过此类文件)。 PKCS8 也是如此。
PKCS#7 证书存储有时是 PEM 编码的,并且它们的边界线中有类似 BEGIN CERTIFICATE STORAGE 的内容。
总而言之 - 在某种程度上,您可以依赖边界线文本,但这并不能给您 100% 的保证。
关于cryptography - 给定一个 PEM 文档,是否有可能从中知道字节的格式,或者是否需要先验信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24742994/