本文整理汇总了C++中Library::GetHashAlgorithm方法的典型用法代码示例。如果您正苦于以下问题:C++ Library::GetHashAlgorithm方法的具体用法?C++ Library::GetHashAlgorithm怎么用?C++ Library::GetHashAlgorithm使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Library
的用法示例。
在下文中一共展示了Library::GetHashAlgorithm方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: data
virtual QPair<QByteArray, bool> GetBulkData(int)
{
QByteArray data(1024, 0);
CreateDescriptor(data);
SetTriggered();
int my_idx = GetGroup().GetIndex(GetLocalId());
int bad = Random::GetInstance().GetInt(0, GetGroup().Count());
while(bad == my_idx) {
bad = Random::GetInstance().GetInt(0, GetGroup().Count());
}
qDebug() << my_idx << "setting bad hash at" << bad;
const Descriptor &cdes = GetMyDescriptor();
QVector<QByteArray> hashes = cdes.XorMessageHashes();
Library *lib = CryptoFactory::GetInstance().GetLibrary();
QScopedPointer<Hash> hashalgo(lib->GetHashAlgorithm());
hashes[bad] = hashalgo->ComputeHash(data);
Descriptor descriptor(cdes.Length(), cdes.PublicDh(), hashes,
cdes.CleartextHash());
SetMyDescriptor(descriptor);
QByteArray my_desc;
QDataStream desstream(&my_desc, QIODevice::WriteOnly);
desstream << GetMyDescriptor();
return QPair<QByteArray, bool>(my_desc, false);
}
示例2: VerifyInnerCiphertext
void ShuffleRoundBlame::VerifyInnerCiphertext()
{
Library *lib = CryptoFactory::GetInstance().GetLibrary();
QScopedPointer<Hash> hash(lib->GetHashAlgorithm());
for(int idx = 0; idx < _public_inner_keys.count(); idx++) {
hash->Update(_public_inner_keys[idx]->GetByteArray());
hash->Update(_public_outer_keys[idx]->GetByteArray());
hash->Update(_encrypted_data[idx]);
}
_broadcast_hash = hash->ComputeHash();
}
示例3: main
int main(int argc, char **argv)
{
QxtCommandOptions options;
options.add(CL_HELP, "display this help message",
QxtCommandOptions::NoValue);
options.add(CL_NKEYS, "number of keys to generate",
QxtCommandOptions::ValueRequired);
options.add(CL_PUBDIR, "directory in which to put public keys (default=./keys/pub)",
QxtCommandOptions::ValueRequired);
options.add(CL_PRIVDIR, "directory in which to put private keys (default=./keys/priv)",
QxtCommandOptions::ValueRequired);
options.add(CL_KEYTYPE, "specify the key type (default=dsa, options=dsa|rsa)",
QxtCommandOptions::ValueRequired);
options.add(CL_LIB, "specify the library (default=cryptopp, options=cryptopp)",
QxtCommandOptions::ValueRequired);
options.add(CL_RAND, "specify the base properties for the key (default=NULL)",
QxtCommandOptions::ValueRequired);
options.add(CL_DEBUG, "enable debugging",
QxtCommandOptions::NoValue);
options.parse(argc, argv);
if(options.count(CL_HELP) || options.showUnrecognizedWarning()) {
options.showUsage();
return -1;
}
QMultiHash<QString, QVariant> params = options.parameters();
int key_count = params.value(CL_NKEYS, 1).toInt();
if(key_count < 1) {
ExitWithWarning(options, "Invalid nkeys");
}
QString pubdir_path = params.value(CL_PUBDIR, DEFAULT_PUBDIR).toString();
QDir pubdir(pubdir_path);
if(!pubdir.exists()) {
pubdir.mkpath(".");
}
if(!pubdir.exists()) {
ExitWithWarning(options, "Unable to create pubdir");
}
QString privdir_path = params.value(CL_PRIVDIR, DEFAULT_PRIVDIR).toString();
QDir privdir(privdir_path);
if(!privdir.exists()) {
privdir.mkpath(".");
}
if(!privdir.exists()) {
ExitWithWarning(options, "Unable to create privdir");
}
if(params.contains(CL_DEBUG)) {
Logging::UseStderr();
}
QString lib_name = params.value(CL_LIB, "cryptopp").toString();
QString key = params.value(CL_KEYTYPE, "dsa").toString();
CryptoFactory &cf = CryptoFactory::GetInstance();
QSharedPointer<CreateKey> ck(new CreateKey());
if(lib_name == "cryptopp") {
if(key == "dsa") {
cf.SetLibrary(CryptoFactory::CryptoPPDsa);
if(params.contains(CL_RAND)) {
ck = QSharedPointer<CreateKey>(
new CreateSeededDsaKey(params.value(CL_RAND).toString()));
}
} else if (key == "rsa") {
cf.SetLibrary(CryptoFactory::CryptoPP);
} else {
ExitWithWarning(options, "Invalid key type");
}
} else {
ExitWithWarning(options, "Invalid library");
}
Library *lib = cf.GetLibrary();
QSharedPointer<Hash> hash(lib->GetHashAlgorithm());
int count = 0;
while(count < key_count) {
QSharedPointer<AsymmetricKey> key((*ck)());
QSharedPointer<AsymmetricKey> pubkey(key->GetPublicKey());
QByteArray hvalue = hash->ComputeHash(pubkey->GetByteArray());
QString id = Integer(hvalue).ToString();
if(!key->Save(privdir_path + QDir::separator() + id)) {
qFatal("Could not save private key");
}
if(!pubkey->Save(pubdir_path + QDir::separator() + id + ".pub")) {
qFatal("Could not save private key");
}
count++;
}
//.........这里部分代码省略.........