1

我是 Cryptopp 的新手,我想对文本进行编码并解码以了解它是如何工作的。编码部分工作正常,但我无法解码字符串?解码后的字符串始终为空。我在加密邮件中问过,有人说这个代码应该可以工作,但它没有。

我想知道出了什么问题。作为加密货币的新手,我看不出有什么问题。

编码:

std::string encoded = m_pkey->GetValue().ToStdString();//here under debugger its ok
std::string decoded;
CryptoPP::StringSource(encoded, true, new CryptoPP::HexDecoder(new CryptoPP::StringSink(decoded)));
4

2 回答 2

2

Crypto++ wiki 有许多示例,包括使用HexEncoderHexDecoder类。

来自维基:

byte decoded[] = { 0xFF, 0xEE, 0xDD, 0xCC, 0xBB, 0xAA, 0x99, 0x88, 
                   0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x00 };
string encoded;

StringSource ss(decoded, sizeof(decoded), true,
    new HexEncoder(
        new StringSink(encoded)
    ) // HexEncoder
); // StringSource

cout << encoded << endl;
...

$ ./cryptopp-test.exe
FFEEDDCCBBAA99887766554433221100
于 2013-10-02T05:35:05.880 回答
0

上述答案中使用的模型就是 Crypto++ 中所谓的“管道”模式。请参阅有关流水线的 Crypto++ 文章

请注意适用于对象所有权的规则 - 如果将指向对象的指针传递给构造函数,则该对象将由新构造的对象拥有并在其析构函数中删除。如果对象通过引用传递给构造函数,则该对象必须在新构造对象的生命周期内保持存在,即您保留所有权并且不能从新对象的鼻子下删除它!

于 2013-10-25T15:58:51.233 回答