値が文字列である重要でないタグがあります。タグ値の変更を確認する必要があります。しかし、これはクライアントとサーバーが関係しているため、文字列の比較を行うのではなく、文字列の値の種類を計算し、その値を使用して文字列の変更を検出する必要があります。文字列は重要ではないため、文字列の変更を検出するためのこのような値を計算するための非常に簡単で迅速なソリューションがあるのだろうかと思います。文字列の変更を検出するために文字列の署名をすばやく計算する方法はありますか?
答えて
それは非可逆ですので
String.hashCode()
が完璧ではありません)(.hashCodeを使用してください。したがって、文字列が変更され、同じハッシュコードを持つ可能性があります。 (ただしこれは頻繁に起こることはありません)文字列が変更されるたびに、そのハッシュコードも変更されます。
あなたがに取得しているものを知っているので、String.hashCode()
のコードはこれです:
public int hashCode() {
int h = hash; // the cached hash value
int len = count; // the number of characters in the string
if (h == 0 && len > 0) {
int off = offset;
char val[] = value;
for (int i = 0; i < len; i++) {
h = 31*h + val[off++];
}
hash = h;
}
return h;
}
これはしばしば十分に起こる。 'int'は32ビット幅です。 –
1/2^32はしばしばですか? –
はい。 http://preshing.com/wp-content/uploads/2011/05/probability-distribution.png –
はい。ただし、一意性が必要な場合はハッシュコードを使用しないでください。 SHA256ダイジェストを使用します。
String tag = "...";
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(text.getBytes("UTF-8"));
byte[] digest = md.digest();
文字列の比較が望ましくないのはなぜか分かりませんが、バイト配列の比較はうまくいくでしょうか? –
サイズだと思います...これについても質問の説明を歓迎します。 –
- 1. 文字列の最後の2文字をすばやく取得する方法はありますか?
- 2. 文字列のピクセル長を計算する方法はありますか?
- 3. 文字列に月や日を検出するPythonモジュールはありますか?
- 4. wpfで文字列のピクセル長を計算する方法は?
- 5. 大文字の大文字文字列を検出する
- 6. 文字列の平均文字を計算する
- 7. Cで文字列の文字周波数を計算する
- 8. 文字列を1文字ずつの文字列に変換する方法
- 9. 出力の変更 - 文字列の文字の合計PHP
- 10. Ruby配列から取り出した文字列をC/C++文字列に変換する方法
- 11. 文字列変数で関数名またはオブジェクト名を呼び出す方法はありますか? actionscript3
- 12. 文字列を文字列に変換する方法hash_map(文字列、文字列、stringHashFunction>をLinuxでC++
- 13. すべての大文字を小文字に変更する方法はありますが、Vimの文字列リテラルを除外する方法
- 14. 文字列のCRC32を計算する方法
- 15. Cの文字列配列から文字列を作成する簡単な方法はありますか?
- 16. 共通部分文字列を検索するために文字列のセットを比較する方法
- 17. ローカライズするXAMLの文字列を検出するツールはありますか?
- 18. XSLTの文字列(文字列(。))にポイントがありますか?
- 19. テキスト文字列を検索し、jQueryのテキスト文字列を変更します
- 20. Rubyで文字列や文字列を検索するための.index()を使用する
- 21. C#文字列書式フラグまたは小文字に変更する文字
- 22. 別の文字列で文字列を検索するには?
- 23. PHPの文字列計算
- 24. Python文字列を文字列検索で変更できますか?
- 25. ディレクトリ文字列の最後のスラッシュをバッチファイルで部分文字列にする方法はありますか?
- 26. Javaの文字列から部分文字列を取り出す方法
- 27. 変数から文字列や文字を削除する
- 28. 文字列ビルダーまたは文字列クラスの文字列を作成する
- 29. 文字列のハッシュアルゴリズムを検出する方法は?
- 30. 文字列の部分文字列に関する統計を注文する
string.hashcode()? (ハッシュコードの衝突の危険性は低い) – assylias