使用 Botan 从私钥中提取 Public 密钥
Extracting Public key from Private key using Botan
我正在尝试使用非对称私钥 public 加密消息。
在 Botan
中,使用 Load_key()
函数,我读取了私钥并想从中提取它的 public 密钥。为了在其构造函数中构建 RSA public 密钥,我需要一个 "Algorithm Identifier" 对象和我拥有的 "key bits"。使用pcks8_algorithm_identifier()
函数的算法标识符对象。
问题是 "Key Bits",其中 returns 是 secure_vector<unsigned char>
而不是 vector<unsigned char>
,当我想将它传递给时遇到了 bad::alloc exception
RSA_PublicKey 构造函数。
有人遇到过这样的问题吗?如果有通过从 Botan 中的输入文件加载密钥来进行非对称加密的替代方法,我将不胜感激
Botan 使用两个接口来表示非对称密钥对:Public_Key
和Private_Key
。 Private_Key
接口继承自 Public_Key
。因此,当您获得例如RSA_PrivateKey
通过 PKCS8::load_key
,这个对象已经代表了 public 和私钥。也就是说,您可以将此对象插入其他需要 Public_Key
.
的方法中
为了访问原始密钥位,Public_Key
接口定义了一个 std::vector<uint8_t> public_key_bits()
。 Private_Key
接口多了一个 secure_vector<uint8_t> private_key_bits()
。因此,每个 Private_Key
实例都应该有 public_key_bits
和 private_key_bits
可用。
参考:https://github.com/randombit/botan/blob/master/src/lib/pubkey/pk_keys.h
附加说明:secure_vector
class 是一个带有特殊分配器的std::vector
,确保在对象被销毁时底层内存被覆盖,以便私钥等敏感信息位不保留在内存中。如果您实际上必须将 secure_vector
转换为法向量,则可以使用便捷函数 Botan::unlock
(https://github.com/randombit/botan/blob/master/src/lib/base/secmem.h).
我正在尝试使用非对称私钥 public 加密消息。
在 Botan
中,使用 Load_key()
函数,我读取了私钥并想从中提取它的 public 密钥。为了在其构造函数中构建 RSA public 密钥,我需要一个 "Algorithm Identifier" 对象和我拥有的 "key bits"。使用pcks8_algorithm_identifier()
函数的算法标识符对象。
问题是 "Key Bits",其中 returns 是 secure_vector<unsigned char>
而不是 vector<unsigned char>
,当我想将它传递给时遇到了 bad::alloc exception
RSA_PublicKey 构造函数。
有人遇到过这样的问题吗?如果有通过从 Botan 中的输入文件加载密钥来进行非对称加密的替代方法,我将不胜感激
Botan 使用两个接口来表示非对称密钥对:Public_Key
和Private_Key
。 Private_Key
接口继承自 Public_Key
。因此,当您获得例如RSA_PrivateKey
通过 PKCS8::load_key
,这个对象已经代表了 public 和私钥。也就是说,您可以将此对象插入其他需要 Public_Key
.
为了访问原始密钥位,Public_Key
接口定义了一个 std::vector<uint8_t> public_key_bits()
。 Private_Key
接口多了一个 secure_vector<uint8_t> private_key_bits()
。因此,每个 Private_Key
实例都应该有 public_key_bits
和 private_key_bits
可用。
参考:https://github.com/randombit/botan/blob/master/src/lib/pubkey/pk_keys.h
附加说明:secure_vector
class 是一个带有特殊分配器的std::vector
,确保在对象被销毁时底层内存被覆盖,以便私钥等敏感信息位不保留在内存中。如果您实际上必须将 secure_vector
转换为法向量,则可以使用便捷函数 Botan::unlock
(https://github.com/randombit/botan/blob/master/src/lib/base/secmem.h).