SecByteBlock to ECDSA<ECP, SHA256>::P ublicKey 和 CryptoPP 中的反向



正如标题所说,有没有一种方法可以将SecByteBlock中的密钥转换为ECDSA<ECP,SHA256>:PublicKey和相反?

从我读到的内容来看,我只是设法使用将PublicKey转换为字符串

PubicKey pubKey;
string s;
StringSink ss(s);
pubKey.Save(ss);
//To string
string encoded;

// Pretty print key
encoded.clear();

StringSource(key, key.size(), true,
new HexEncoder(
new StringSink(encoded)
) // HexEncoder
); // StringSource
PublicKey string_to_publicKey(string keyInHex){
string decodedKey;
HexDecoder decoder;
decoder.Put( (byte*)keyInHex.data(), keyInHex.size() );
decoder.MessageEnd();
word64 size = decoder.MaxRetrievable();
if(size && size <= SIZE_MAX)
{
decodedKey.resize(size);
decoder.Get((byte*)&decodedKey[0], decodedKey.size());
}
cout << "Decoded : " << decodedKey << endl;
StringSource ss(decodedKey, true);
PublicKey pubKey;
pubKey.Load(ss);
return pubKey;
}
string public_key_to_string(PublicKey publicKey){
string ss;
StringSink sink(ss);
publicKey.Save(sink);
string encoded;
HexEncoder encoder;
encoder.Put((byte*)ss.data(), ss.size());
encoder.MessageEnd();
word64 size = encoder.MaxRetrievable();
if(size)
{
encoded.resize(size);
encoder.Get((byte*)&encoded[0], encoded.size());
}
std::cout << "key in hex: " << encoded;
return encoded;
}

最新更新