我正在尝试使用非对称私钥-公钥对消息进行加密。在Botan
使用Load_key()
函数的中,我读取了私钥,并希望从中提取私钥。为了在其构造函数中构造RSA公钥,我需要一个“算法标识符”对象和一个“密钥位”。算法标识符对象使用pcks8_algorithm_identifier()
函数。
问题是“密钥位”返回asecure_vector<unsigned char>
而不是a,vector<unsigned char>
并且bad::alloc exception
在我要将其传递给RSA_PublicKey构造函数时遇到了a 。
有人遇到这样的问题吗?如果存在通过从Botan中的输入文件中加载密钥来进行非对称加密的另一种方法,我将不胜感激
Botan使用两个接口表示非对称密钥对:Public_Key
和Private_Key
。该Private_Key
接口继承自Public_Key
。因此,当您获得诸如RSA_PrivateKey
via的信息时PKCS8::load_key
,此对象既已表示公钥也表示私钥。也就是说,您可以将此对象插入需要使用的其他方法中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
该类std::vector
具有特殊的分配器,可确保在销毁对象时覆盖基础内存,以使诸如私钥位之类的敏感信息不会保留在内存中。如果您实际上必须将a转换secure_vector
为法向量,Botan::unlock
则可以使用便捷功能(https://github.com/randombit/botan/blob/master/src/lib/base/secmem.h)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句