Hashing Data in Cpp
TEAgent is the base class of TEAgentMatrix and TEAgentFile. Normally there is no need to work directly with this class. However, the method performHash() provided by TEAgent is convenient for hashing an array of strings. Hashing includes only two steps: set the data and hash it. Hashing does not require a connection to a key service. The following example demonstrates how to hash data using the TEAgent class.
Code Sample
See the C++ environment settings for details on setting the project environment.
<cpp_agent.cpp>
/*****************************************************************************************
* cpp_agent_hash.cpp
*
*
******************************************************************************************/
#include <iostream>
#include "teagent.h"
#include "teexception.h"
using namespace ERUCES;
using namespace std;
int main()
{
int i;
try
{
// Set data to be hashed and salts
vector< pair<string, string> > vctForHash;
vctForHash.push_back( pair< string, string>("test string 1", "salt 1") );
vctForHash.push_back( pair< string, string>("test string 1", "salt 1") );
vctForHash.push_back( pair< string, string>("test string 3", "salt 3") );
vctForHash.push_back( pair< string, string>("test string 4", "salt 4") );
vctForHash.push_back( pair< string, string>("test string 5", "salt 5") );
vctForHash.push_back( pair< string, string>("test string 6", "salt 6") );
vctForHash.push_back( pair< string, string>("test string 7", "salt 7") );
vctForHash.push_back( pair< string, string>("test string 8", "salt 8") );
cout << "Original data and salts:\n";
for(i=0; i<vctForHash.size(); i++)
cout << "(data, salt) = " << vctForHash[i].first << ", "
<< vctForHash[i].second << endl;
// Hash data
TEAgent agent;
agent.setEncodeMode(true);
agent.performHash(vctForHash);
cout << "\nHashed values and salts:\n";
for(i=0; i<vctForHash.size(); i++)
cout << "(data, salt) = " << vctForHash[i].first << ", "
<< vctForHash[i].second << endl;
}
catch (TEException &e)
{
cout << e.getAllMessages() << endl;
}
catch (...)
{
cout << "Unexpected error" << endl;
}
return 0;
}
Output
Original data and salts:
(data, salt) = test string 1, salt 1
(data, salt) = test string 1, salt 1
(data, salt) = test string 3, salt 3
(data, salt) = test string 4, salt 4
(data, salt) = test string 5, salt 5
(data, salt) = test string 6, salt 6
(data, salt) = test string 7, salt 7
(data, salt) = test string 8, salt 8
Hashed values and salts:
(data, salt) = 6JkggtiuXoA9RbWXgMv/foc8uqg=, salt 1
(data, salt) = 6JkggtiuXoA9RbWXgMv/foc8uqg=, salt 1
(data, salt) = WI+C043tWXhP0FltY842fnD9E7c=, salt 3
(data, salt) = TRJ8QyXoo4wjkjyJRmfQGY4DN4Y=, salt 4
(data, salt) = vC+7psNMkqIRxsPkvc72nQLNfnM=, salt 5
(data, salt) = /PIXr1SXm/g2ft9vlfumaMyNcN4=, salt 6
(data, salt) = yanvOYVKu1IM8qGIrs+w9tpcaoA=, salt 7
(data, salt) = IA+m3d0wNmi6e1oY2sJa+5NpEX8=, salt 8