「更新」できるMD5/SHAのプロパティとは何ですか?たとえば、 "test"のハッシュがある場合、 "case"を追加して "testcase"のハッシュを取得できます。それは、彼らが実際にインクリメンタルに計算されているということだけである...MD5/SHAの「更新」プロパティ?
答えて
EDIT:これは、私は以下の言及1ビットのパディングのためにも理論的には不可能です。事実上、md5("case", seed=md5("test")) == md5("test" + <1-bit> + "case")
。 md5("test")
を使用して、漸進的にmd5("test" + "case")
を計算する方法はありません。
あなたは512ビットのチャンクを連結する場合、これは理論的には可能です。状態マシンの最初の実行は、 "ケース"を512ビットのチャンクにするのに使用されるパディングによって汚染されるため、 "ケース"を "テスト"に追加するためには機能しません。
さらに、パディングがゼロのちょうど束ではありません。メッセージには常に最初に1ビットが埋め込まれているので、 "case"と "case \ 0"は異なるハッシュを生成します。したがって、パディングの有無にかかわらず同じハッシュを持つ「ケース」に頼ることはできません。 MD5アルゴリズムは、次の手順を持っている
を私は、このプロパティにビットを読みたいが、私の検索は何を上げていない - あなたは、データの最初のnバイト上で動作することによって、それらを計算し、(128 MD5の場合には、http://en.wikipedia.org/wiki/MD5#Algorithmを参照)、そのデータの次のnバイトに、等
彼らが埋められていますか?これは、新しいものを得るためにあなたのハッシュにいつも数バイトを追加できるとは限りませんか?私は基本的に、XYのダイジェストを得るためにXのダイジェストにYを追加する方法が常にあるかどうか疑問に思っています。 –
これは、512ビットチャンク化とパディングのために、 "test" + "case"に対しては機能しません。 –
ありがとう、ありがとう。 –
:
1) pad input string to a multiple of 64 bytes
2) split input string into blocks of 64 bytes
3) initialise state (a 4-element array)
4) for each block: state <= transform(state,block)
5) encode state as string
あなたが段階的に何かをハッシュしたい状況(例えば、大きなファイル)をサポートするには、以下のように、これはリファクタリングすることができます。
初期化:
1) initialise state
2) leftover bytes <= ""
更新:
1) append leftover bytes to start of input string
2) split input string into blocks of 64 bytes
3) for each complete block: state <= transform(state,block)
4) leftover bytes <= contents of the incomplete block, if one exists
ダイジェスト:
1) pad a copy of the leftover bytes
2) split the padded leftover bytes into blocks of 64 bytes
2) tmp_state <= state
2) for each block: tmp_state <= transform(tmp_state,block)
3) encode tmp_state as string
私は実際にVBAで、このアプローチを実装しました - 正常に動作するようです。コードをどこにアップロードするべきですか?
- 1. コールバック後のプロパティの更新
- 2. は、オブジェクトのプロパティを更新
- 3. 静的プロパティの更新バインディング
- 4. JavaScriptオブジェクトのプロパティを更新
- 5. SVNプロパティの更新 "svn:needs-lock"
- 6. データ変更後のtableViewCellsプロパティの更新
- 7. OrientDB更新プロパティはJavaScript
- 8. マングーススキーマメソッドと "this"更新プロパティ - NodeJS
- 9. 更新自動的にプロパティ
- 10. トリガ計算プロパティ更新
- 11. Vue.js - オブジェクトのプロパティ更新後にdomを更新する
- 12. iOS - Core Data transientプロパティの更新/更新方法
- 13. コンソールのコントローラオブジェクトのプロパティを更新する
- 14. 問題の更新オブジェクトのプロパティ
- 15. クラウド外部Gitのプロパティの更新
- 16. Sparqlプロパティの編集値の更新クエリ
- 17. 複数のプロパティを更新する
- 18. 実行時にopenseadragonの更新プロパティshowReferenceStrip
- 19. アイテムのプロパティを更新するParallel.For()
- 20. リストのプロパティが更新されない
- 21. SharePoint:SPListItemVersionのプロパティを更新する方法
- 22. スレッドセーフティでシングルトンのプロパティを更新する
- 23. Mapboxの更新プロパティがジオメトリになる
- 24. プロパティの内容を更新するインスタンス
- 25. エンティティフレームワーク4、特定のプロパティを更新
- 26. エンティティ内のフィールド(プロパティ)を更新する
- 27. PHPの更新静的プロパティ配列
- 28. レールの関係プロパティを更新する
- 29. タスクのViewModelプロパティを更新する
- 30. 単一のプロパティに対するNHibernateの更新がSQLのすべてのプロパティを更新する
これはランダムな塩を付加するために使用されるので、一貫している限り余分なビットは傷つきません。あなたの答えをありがとう! –
@Stavros: "テストケース"を直接実際に計算するつもりがないなら、あなたが何をするかは本当に問題ではありません。あなたは 'md5(md5(" test ")+" case ")'を計算することさえできるので、シードパラメータを取るカスタムmd5を書く必要はありません。 –