微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SecByteBlock到ECDSA <ECP,SHA256> :: PublicKey并在CryptoPP中反向

如何解决SecByteBlock到ECDSA <ECP,SHA256> :: PublicKey并在CryptoPP中反向

正如标题所述,有没有一种方法可以将SecByteBlock中的密钥转换为ECDSA :: PublicKey,然后反向转换?

从我的阅读中,我设法使用以下方法将PublicKey转换为strin:

    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;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。