static int TestEncryptDecrypt(const Crypto& cryptoA, const Crypto& cryptoB) { std::string content= cryptoA.GeneratePassword(std::string("0123456789abcdefghijklmnopqrstuvABCDEFGHIJKLMNOPQRSTUVWXYZ"), 256000); auto encrypted = cryptoA.Encrypt(std::vector<BYTE>(content.begin(), content.end()), true); auto decrypted = cryptoB.Decrypt(encrypted, true); auto sameCount = 0; for (auto index = 0 ; index != content.length() ; ++index) { sameCount += content[index] == encrypted[index] ? 1 : 0; if (content[index] != decrypted[index]) { std::wcout << L"Crypto::Encrypt decrypted content error" << std::endl; return 1; } } if (sameCount == content.length()) { std::wcout << L"Crypto::Encrypt encrypted content error" << std::endl; return 1; } return 0; }
static int TestGeneratePassword(const Crypto& crypto, const std::string dictionary, unsigned int len) { auto password = crypto.GeneratePassword(dictionary, len); if (password.length() != len) { std::wcout << L"Crypto::GeneratePassword length error" << std::endl; return 1; } for (auto iter = password.begin() ; iter != password.end() ; ++iter) { if (dictionary.find(*iter) == std::string::npos) { std::wcout << L"Crypto::GeneratePassword dictionary error" << std::endl; return 1; } } return 0; }