我已经搜索了一段时间,无法找到有关CryptoPP :: TEA加密的任何文档。
任何人都知道如何使用CryptoPP :: TEA加密数据?
感谢。
答案 0 :(得分:1)
任何人都知道如何使用CryptoPP :: TEA加密数据?
Crypto ++提供TEA和XTEA的实现。我记得可能存在一些互操作问题,因为有一个较新的TEA变体(但我不记得细节)。
TEA和XTEA只是分组密码,因此它们可以像任何其他分组密码一样使用(例如3DES,AES或Cameilla)。因为它可以像任何其他分组密码一样使用,下面的代码来自Crypto ++的CBC Mode wiki页面。我所做的就是将AES改为TEA。
以下是该计划的输出:
$ ./cryptopp-test.exe
plain text: CBC Mode Test
cipher text: 483ABA61693D885532604E376703A91D
recovered text: CBC Mode Test
以下是该计划:
AutoSeededRandomPool prng;
SecByteBlock key(TEA::DEFAULT_KEYLENGTH);
prng.GenerateBlock( key, key.size() );
byte iv[ TEA::BLOCKSIZE ];
prng.GenerateBlock( iv, sizeof(iv) );
string plain = "CBC Mode Test";
string cipher, encoded, recovered;
/*********************************\
\*********************************/
try
{
cout << "plain text: " << plain << endl;
CBC_Mode< TEA >::Encryption e;
e.SetKeyWithIV( key, key.size(), iv );
StringSource ss(plain, true,
new StreamTransformationFilter( e,
new StringSink( cipher )
) // StreamTransformationFilter
); // StringSource
}
catch( const CryptoPP::Exception& e )
{
cerr << e.what() << endl;
exit(1);
}
/*********************************\
\*********************************/
// Pretty print cipher text
StringSource ss(cipher, true,
new HexEncoder(
new StringSink( encoded )
) // HexEncoder
); // StringSource
cout << "cipher text: " << encoded << endl;
/*********************************\
\*********************************/
try
{
CBC_Mode< TEA >::Decryption d;
d.SetKeyWithIV( key, key.size(), iv );
StringSource ss(cipher, true,
new StreamTransformationFilter( d,
new StringSink( recovered )
) // StreamTransformationFilter
); // StringSource
cout << "recovered text: " << recovered << endl;
}
catch( const CryptoPP::Exception& e )
{
cerr << e.what() << endl;
exit(1);
}