web-dev-qa-db-ja.com

std :: stringをハッシュする方法は?

パスワードを繰り返し覚えるのに役立つ小さなユーティリティを作成しています。パスワードを入力して、各セッションの前ではなく、毎日1回だけ記憶させたいと思います。もちろん、私はパスワード自体は保存しませんが、ハッシュは喜んで保存します。

では、C++標準ライブラリを使用してstd::stringからハッシュを取得する最も簡単な方法は何ですか?

18
Septagram

外部ライブラリを含まない簡単な解決策として、hash<std::string>を使用してstringsをハッシュできます。ヘッダーファイルhash_mapまたはunordered_map(またはその他のファイル)を含めることで定義されます。

#include <string>
#include <unordered_map>

hash<string> hasher;

string s = "heyho";

size_t hash = hasher(s);

SHAのセキュリティを追加したい場合は、他のすべての機能が必要ない場合は、大規模なCrypto ++ライブラリをダウンロードする必要はありません。インターネットにはスタンドアロンの実装がたくさんあります。「sha implementation c ++」を検索してください。

24
Seth Carnegie

c ++ 11を使用すると、次のことができます。

#include <string>
#include <unordered_map>

std::size_t h1 = std::hash<std::string>{}("MyString");
std::size_t h2 = std::hash<double>{}(3.14159);

詳細はこちら こちら

12
Ou Wei

STLファンクタハッシュ を使用できます。 STLライブラリにあるかどうかを確認します。

これは_size_t_を返すため、範囲はnumeric_limits<size_t>::min()numeric_limits<size_t>::max()であることに注意してください。 SHAまたはそれが受け入れられない場合は何かを使用する必要があります。

1
Kashyap