1. ホーム
  2. javascript

[解決済み] JavaScriptのためのシンプルな(安全でない)ハッシュ関数?[重複している]。

2022-03-14 17:35:47

質問

<余談
この質問には、すでにここで回答があります :
クローズド 9年前 .

重複の可能性あり。
Javascript/jQueryで文字列からHashを生成する

どなたか、(ブラウザ互換の)JavaScriptで書かれた簡単な(つまり、数百行ではなく数十行のコード)ハッシュ関数を提案していただけませんか? 理想的には、入力として文字列を渡されたとき、MD5やSHA1などの典型的な出力である32文字の16進文字列に似たものを生成するものが欲しいのです。 暗号的に安全である必要はなく、衝突に適度に耐性があればよい。 (私の最初の使用例はURLですが、おそらく将来的には他の文字列にも使用したいと思います)。

どのように解決するの?

自分で検証したわけではありませんが、こちらをご覧ください。 Java の String.hashCode() メソッドを JavaScript で実装したものです。 . それなりに短いようです。

<ブロッククオート

このプロトタイプを使用すると、単純に .hashCode() を任意の文字列に対して、例えば "some string".hashCode() というハッシュコードを受け取り、1395333309のような数値のハッシュコード(より具体的には、Javaでの等価値)を受け取ります。

String.prototype.hashCode = function() {
    var hash = 0;
    for (var i = 0; i < this.length; i++) {
        var char = this.charCodeAt(i);
        hash = ((hash<<5)-hash)+char;
        hash = hash & hash; // Convert to 32bit integer
    }
    return hash;
}