【问题标题】:How to find out the PKCS of a PublicKey - Cryptography如何找出公钥的 PICS - 密码学
【发布时间】:2021-04-10 16:30:28
【问题描述】:

一个简单的问题,但让我知道该怎么做。

我从客户那里收到了一个公钥,我想知道这个公钥遵循哪个标准。

即:PKCS#1、PKCS#2、PKCS#3 等等。

我为什么需要它? 因为我想验证签名,因为我已经有了签名和加密的文本。

【问题讨论】:

  • 用解析器解析它? 8gwifi.org/PemParserFunctions.jsp
  • 如果是 PEM,只需查看 dashes-BEGIN 行上的文字即可告诉您所有您需要知道的信息。但是有许多格式不是 PEM。有些,如 XMLdsig 和 JWK,显然是自我描述的;其他人不是。 PGP 'armor' 将在第一行类似地告诉它一个键,但没有关于它的详细信息。

标签: java cryptography rsa public-key


【解决方案1】:

大多数 PKCS 根本不涉及公钥。全部列在wikipedia

PKCS1 为 RSA 定义了公钥和私钥的 ASN.1 格式(仅)。这些几乎是描述符合任何 PKCS 的唯一键。

PKCS2-4 和 6 不再存在,尽管 OpenSSL 已经导致 DH 的 PKCS3 格式保持不变——但 DH 不用于签名。

PKCS5 不涉及公钥。

PKCS7 可以使用公钥对消息进行加密和/或签名验证和/或可以传送一个或多个 X.509 证书(每个)包含一个公钥。此类证书可以用于任何算法。

PKCS8 不涉及公钥。

PKCS9 不直接涉及任何密钥,尽管某些属性可以在 X.509 证书中用于公钥。

PKCS10 用于请求 X.509 证书,并以与该证书相同的方式表示公钥,可以用于任何算法。

PKCS11 是一个接口;尽管可以通过它传输多种类型的密钥,但这些密钥不是“PKCS11”密钥。

PKSC12 实际上只包含一个公钥作为 X.509 证书,适用于任何算法。

因此,如果将密钥描述为“PKCS”,则几乎可以肯定是 PKCS1,因此是 RSA。但是现在存在许多公钥算法并且或多或少被广泛使用(DSA/DH/MQV/EG 一些,ECDSA/ECDH/ECIES 和 EdDSA/X 很多,GOST 很少,后量子很少但正在增长),这些算法没有被任何PKCS。

【讨论】:

    猜你喜欢
    • 2010-11-16
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多