source: trunk/CrypPlugins/MD5Collider/DetailedDescription/Description.xaml @ 1183

Last change on this file since 1183 was 1183, checked in by pretzsch, 12 years ago

+ MD5Collider: Added description
+ MD5Collider: Added new optional input allowing user to specify prefix of generated colliding data blocks
o MD5Collider: Made RandomSeed input optional

File size: 2.7 KB
Line 
1<FlowDocument PagePadding="5,0,5,0" AllowDrop="True" NumberSubstitution.CultureSource="User" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"><Paragraph><Run FontWeight="Bold" FontSize="18.6666666666667" xml:lang="de-de">MD5 collider</Run></Paragraph><Paragraph><Run FontSize="13.3333333333333" xml:lang="de-de" xml:space="preserve">The MD5 collider plugin allows you to create two blocks of differing binary data which either hash to the same MD5 value or can be used as part of data hashing to the same MD5 value. These blocks will always be exactly 128 bytes long. They are output as byte[] and stream objects. The plugin takes two optional inputs. </Run></Paragraph><Paragraph><Run FontSize="13.3333333333333" xml:lang="de-de" xml:space="preserve">The first is a </Run><Run FontWeight="Bold" FontSize="13.3333333333333" xml:lang="de-de">random seed</Run><Run FontSize="13.3333333333333" xml:lang="de-de">. This input - if connected - allows you to get a reproducable result: Two runs of the collider with the same random seed will generate the same binary output in approximately the same running time. If left unconnected, the output and running time will be different for each execution.</Run></Paragraph><Paragraph><Run FontSize="13.3333333333333" xml:lang="de-de" xml:space="preserve">As a second input, an optional </Run><Run FontWeight="Bold" FontSize="13.3333333333333" xml:lang="de-de">"prefix" parameter</Run><Run FontSize="13.3333333333333" xml:lang="de-de" xml:space="preserve"> can be given. If this parameter is omitted, you will simply receive two blocks of output that hash to the same MD5 value. Due to the nature of MD5, appending identical data to both of these blocks will still result in them hashing to the same value. However, prepending identical data to the blocks will break the collision.</Run></Paragraph><Paragraph><Run FontSize="13.3333333333333" xml:lang="de-de">If you want to prepend data to build your collision data, you should set this data as the prefix parameter. It must have a length that is a multiple of 64 bytes. When it is set to a non-empty value, an intermediate hash value is calculated from the input and used in the computation instead of the default starting IHV, resulting in different output blocks which will not hash to the same MD5 value on their own. However, if you concatenate the generated blocks B1 and B2 to the given prefix data P so that you receive two new blocks (P || B1) and (P || B2), they will have the same MD5. You can then append more identical data without breaking the collision. Thus, using the prefix parameter, you may create colliding blocks (Prefix || C1 || Postfix), (Prefix || C2 || Postfix) with identical pre- and postfixes.</Run></Paragraph></FlowDocument>
Note: See TracBrowser for help on using the repository browser.