Vielen Dank für das feeback on- und offlist. Hier die überarbeitete version: std::pair<string,string> hash_password(const string password) { using namespace CryptoPP; unsigned int iterations = 1000000; AutoSeededRandomPool rng; SecByteBlock pwsalt(AES::DEFAULT_KEYLENGTH); rng.GenerateBlock(pwsalt,pwsalt.size()); SecByteBlock derivedkey(AES::DEFAULT_KEYLENGTH); PKCS5_PBKDF2_HMAC<SHA256>( derivedkey, derivedkey.size(), 0x00, (byte *) password.data(), password.size(), pwsalt, pwsalt.size(), iterations ); std::string salthex; StringSource ss1(pwsalt,pwsalt.size(),true, new HexEncoder( new StringSink(salthex) ) ); std::string derivedhex; StringSource ss2(derivedkey,derivedkey.size(),true, new HexEncoder( new StringSink(derivedhex) ) ); return {derivedhex, salthex}; } On 09/12/2018 01:31 PM, reox wrote:
Soweit ich weiß sollte man für Passwörter hash Funktionen verwenden, welche für Passwörter gemacht wurden und nicht die "üblichen verdächtigen" wie SHA. Hier gibts dazu ne ganze Menge infos: https://crackstation.net/hashing-security.htm
LG Sebastian
Am 12. September 2018 13:09:39 MESZ schrieb Amir <amir@viel-zu.org>:
ich hab mir eine passwort hashing funktion gezimmert und hab aber zweifel ob sie sicher ist. was denkt ihr?
#include <cryptopp/hex.h> #include <cryptopp/sha.h> #include <cryptopp/base64.h> #include <random>
using std::string;
std::<string,string> hash_password(const string password) { std::mt19937 rng; rng.seed(std::random_device()()); std::uniform_real_distribution<std::mt19937::result_type> dist(0,1);
string salt = std::to_string(dist(rng)); CryptoPP::SHA256 hash; byte digest[CryptoPP::SHA256::DIGESTSIZE]; std::string output;
hash.CalculateDigest(digest,(const byte *)salt.c_str(),salt.size());
CryptoPP::HexEncoder encoder; CryptoPP::StringSink *SS = new CryptoPP::StringSink(output); encoder.Attach(SS); encoder.Put(digest,sizeof(digest)); encoder.MessageEnd();
return {output, salt}; } ------------------------------------------------------------------------ intern mailing list intern@lists.metalab.at https://metalab.at/wiki/Intern_Abonnement_Verwalten https://lists.metalab.at/mailman/listinfo/intern
_______________________________________________ Metalab mailing list Metalab@lists.metalab.at https://lists.metalab.at/mailman/listinfo/metalab