Je fais un petit utilitaire pour m'aider à me souvenir des mots de passe par la répétition. J'aimerais entrer un mot de passe à rappeler une seule fois tous les jours et non avant chaque session. Bien sûr, je ne stockerais pas un mot de passe lui-même, mais je serais heureux de stocker son hachage.
Donc, quels sont les moyens les plus faciles d'obtenir un hasch de std::string
Utilisation de la bibliothèque standard C++?
Pour une solution rapide n'impliquant aucune bibliothèque externe, vous pouvez utiliser hash<std::string>
à hachage string
s. Il est défini en incluant les fichiers d'en-tête hash_map
ou unordered_map
(ou quelques autres aussi).
#include <string>
#include <unordered_map>
hash<string> hasher;
string s = "heyho";
size_t hash = hasher(s);
Si vous décidez que vous souhaitez que la sécurité supplémentaire de SHA, vous n'avez pas à télécharger la grande bibliothèque Crypto ++ si vous n'avez pas besoin de toutes ses autres fonctionnalités; Il existe de nombreuses implémentations autonomes sur Internet, il suffit de rechercher une "mise en œuvre SHA C++".
utilisation de C++ 11, vous pouvez:
#include <string>
#include <unordered_map>
std::size_t h1 = std::hash<std::string>{}("MyString");
std::size_t h2 = std::hash<double>{}(3.14159);
en voir plus ICI .
Vous pouvez utiliser le STL FUNCTOR HASH . Voyez si votre STL LIB l'a ou non.
Notez que celui-ci renvoie un size_t
, Donc la plage est numeric_limits<size_t>::min()
numeric_limits<size_t>::max()
. Vous devrez utiliser SHA ou quelque chose si ce n'est pas acceptable ..