2013-06-25 61 views
1

我是Cryptopp的新手,我想對文本和解碼進行編碼,以瞭解其工作原理。 編碼部分工作正常,但我不能得到字符串解碼?總是解碼的字符串是空的。我在Crypto郵件中詢問過,有人說這段代碼應該可以工作,但事實並非如此。用Crypto ++解碼Hex編碼值

我想知道什麼是錯的。 作爲新來的加密我看不出什麼是錯的。

的代碼:

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

回答

2

的加密++ 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 
0

在上面的回答中使用的模型是什麼,是指在加密的「管道」的格局++。請參閱Crypto++ article on pipelining

請注意適用於對象所有權的規則 - 如果將指向對象的指針傳遞給構造函數,則該對象將由新構造的對象擁有並在其析構函數中刪除。如果通過引用將對象傳遞給構造函數,那麼對象在新構造對象的生命期中必須保持存在,即您保留所有權,並且不得將它從新對象的鼻子下刪除!