「更新」できる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. SVNプロパティの更新 "svn:needs-lock"
- 3. は、オブジェクトのプロパティを更新
- 4. JavaScriptオブジェクトのプロパティを更新
- 5. iOS - Core Data transientプロパティの更新/更新方法
- 6. エンティティフレームワーク4、特定のプロパティを更新
- 7. リストのプロパティが更新されない
- 8. プロパティの内容を更新するインスタンス
- 9. SharePoint:SPListItemVersionのプロパティを更新する方法
- 10. 単一のプロパティに対するNHibernateの更新がSQLのすべてのプロパティを更新する
- 11. いつプロパティが更新されるか
- 12. django、プロパティはモデルインスタンスを更新します
- 13. jQueryがCSSプロパティを更新しない
- 14. BindlingListの項目プロパティの変更を含むListBoxの更新
- 15. TextBoxがプロパティの変更で更新されない
- 16. プロパティ選択の変更後にプロパティビューが更新されない
- 17. Ember、プロパティの変更時にテンプレートが更新されない
- 18. プロパティの更新ページまたはタブのコントロールのレイアウト
- 19. リストの理解の方法でオブジェクトのプロパティを更新する
- 20. Entity Frameworkのナビゲーションのプロパティを更新するICollectionの項目
- 21. イベントのスタイルトリガーを更新するための添付プロパティ
- 22. 依存関係プロパティを別のものから更新する
- 23. TitanグラフデータベースのListカーディナリティでvertexプロパティの値を更新する
- 24. 自動的に計算されるプロパティのバインディングの更新
- 25. 子コンポーネントの角2 ngModelが親コンポーネントのプロパティを更新する
- 26. 移行中のAlfrescoワークフローのプロパティを更新する
- 27. mkannotationviewの画像プロパティの更新をアニメーション化する
- 28. ReactJsの状態のプロパティ更新を無視するには?
- 29. 関連オブジェクトのプロパティが変更された場合のコアデータオブジェクトの更新
- 30. プロパティの変更
これはランダムな塩を付加するために使用されるので、一貫している限り余分なビットは傷つきません。あなたの答えをありがとう! –
@Stavros: "テストケース"を直接実際に計算するつもりがないなら、あなたが何をするかは本当に問題ではありません。あなたは 'md5(md5(" test ")+" case ")'を計算することさえできるので、シードパラメータを取るカスタムmd5を書く必要はありません。 –