<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Unterschiedliche MD5 Implementierungen liefern unterschiedlichen Hash-Wert?]]></title><description><![CDATA[<p>Hi,</p>
<p>ja also die Frage steht im Prinzip schon im Topic. Das kann doch eigentlich nicht sein oder? Also konkret habe ich folgenden Fall:<br />
In einem C#-Programm wird ein MD5-Hash von einem Passwort erzeugt und in eine Datenbank geschrieben (es wird hier die MD5CryptoServiceProvider-Klasse benutzt).<br />
Diesen Hash-Wert lese ich später wieder von einem C++ Programm aus und will den mit anderen MD5-Hashes vergleichen. Ich habe mir jetzt schon 2 MD5-Implementierungen in C++ besorgt (eine ist z.B. von Codeproject), aber die liefern auf demselben Passwort einen anderen Hashwert wie den Hash von C#. (Allerdings sind die erzeugten Hash-Werte der C++-Implementierungen untereinander gleich).</p>
<p>Im C#-Projekt wird beim Erzeugen des Hashes ein Byte-Arrray zurückgeliefert, und dann wird jedes Byte nacheinander mit ToString(&quot;x2&quot;) (was wohl eine Hex-Repräsentation erzeugt) zu einem String zusammengesetzt, der dann eben in der DB gespeichert wird. In meinen C++ Implementierungen wird dies allerdings automatisch intern schon erledigt, d.h. dort wird auch eine Hexadezimal-Repräsentation erzeugt und diese dann als String zurückgeliefert.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/174529/unterschiedliche-md5-implementierungen-liefern-unterschiedlichen-hash-wert</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Jul 2026 00:01:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174529.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Feb 2007 11:19:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unterschiedliche MD5 Implementierungen liefern unterschiedlichen Hash-Wert? on Wed, 28 Feb 2007 11:19:34 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ja also die Frage steht im Prinzip schon im Topic. Das kann doch eigentlich nicht sein oder? Also konkret habe ich folgenden Fall:<br />
In einem C#-Programm wird ein MD5-Hash von einem Passwort erzeugt und in eine Datenbank geschrieben (es wird hier die MD5CryptoServiceProvider-Klasse benutzt).<br />
Diesen Hash-Wert lese ich später wieder von einem C++ Programm aus und will den mit anderen MD5-Hashes vergleichen. Ich habe mir jetzt schon 2 MD5-Implementierungen in C++ besorgt (eine ist z.B. von Codeproject), aber die liefern auf demselben Passwort einen anderen Hashwert wie den Hash von C#. (Allerdings sind die erzeugten Hash-Werte der C++-Implementierungen untereinander gleich).</p>
<p>Im C#-Projekt wird beim Erzeugen des Hashes ein Byte-Arrray zurückgeliefert, und dann wird jedes Byte nacheinander mit ToString(&quot;x2&quot;) (was wohl eine Hex-Repräsentation erzeugt) zu einem String zusammengesetzt, der dann eben in der DB gespeichert wird. In meinen C++ Implementierungen wird dies allerdings automatisch intern schon erledigt, d.h. dort wird auch eine Hexadezimal-Repräsentation erzeugt und diese dann als String zurückgeliefert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236700</guid><dc:creator><![CDATA[nep]]></dc:creator><pubDate>Wed, 28 Feb 2007 11:19:34 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche MD5 Implementierungen liefern unterschiedlichen Hash-Wert? on Wed, 28 Feb 2007 11:31:21 GMT]]></title><description><![CDATA[<p>Klingt nach einem Problem mit der Eingabe.</p>
<p>Erzeugst du vielleicht in C# einen Hash von einem Unicode-String und in C++ von einem String mit 8-Bit Zeichen ?</p>
<p>Dann kriegst du natürlich einen anderen Hashwert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236703</guid><dc:creator><![CDATA[nn]]></dc:creator><pubDate>Wed, 28 Feb 2007 11:31:21 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche MD5 Implementierungen liefern unterschiedlichen Hash-Wert? on Wed, 28 Feb 2007 11:37:36 GMT]]></title><description><![CDATA[<p>kannst ja damit vergleichen: <a href="http://md5-hash-online.waraxe.us/" rel="nofollow">http://md5-hash-online.waraxe.us/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236706</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Wed, 28 Feb 2007 11:37:36 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche MD5 Implementierungen liefern unterschiedlichen Hash-Wert? on Wed, 28 Feb 2007 12:35:46 GMT]]></title><description><![CDATA[<p>Hmm ja, also daran mit den Kodierungen dachte ich auch zuerst. Ich hab dann einfach mal in dem C#-Code alle möglichen Kodierungen (die man da auswählen kann) ausprobiert (ASCII,UTF8,UTF32,Unicode), aber habe immer einen anderen Hash als den der C++ Implementierungen erhalten. Deshalb hatte ich das eigentlich ausgeschlossen.</p>
<p>Jetzt hab ich allerdings mal folgendes ausprobiert: Bisher war ja normal immer Unicode aktiviert in meinem C++ Projekt (Win32,MFC). Jetzt hab ich das mal deaktiviert (und dann sollte CString ja auch nur normale chars benutzen, also ANSI), und schwupps kam genau der selbe Hash wie bei dem C# Projekt raus.<br />
Das wundert mich aber etwas, da das ja eigentlich auch mit Unicode funktionieren sollte...vielleicht liegts auch an der C++ Implementierung... muss ich mal schauen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236761</guid><dc:creator><![CDATA[nep]]></dc:creator><pubDate>Wed, 28 Feb 2007 12:35:46 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche MD5 Implementierungen liefern unterschiedlichen Hash-Wert? on Wed, 28 Feb 2007 12:42:53 GMT]]></title><description><![CDATA[<p>Du musst darauf achten, das immer die gleichen &quot;Bytes&quot; gehasht werden, sonst kommt natürlich ein anderer Hash raus (was ja auch so sein soll ;)). Also muss das Encoding auf beiden Systemen gleich sein. Wenn du also C++ immer mit Unicode kompiliert hast, musst du das bei C# auch so machen (Ich glaub unter Windos ist Unicode =&gt; UTF-16)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236767</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Wed, 28 Feb 2007 12:42:53 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiedliche MD5 Implementierungen liefern unterschiedlichen Hash-Wert? on Wed, 28 Feb 2007 12:45:44 GMT]]></title><description><![CDATA[<p>Ja, also ich hatte natürlich dann mit Unicode in C++ auch die Unicode-Codierung in C# benutzt. Aber das hatte eben seltsamerweise nicht funktioniert. Zumindest nicht mit der Implementierung die ich getestet hatte. Aber die ist glaub auch fehlerhaft, denn jetzt mit der anderen funktioniert das</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236769</guid><dc:creator><![CDATA[nep]]></dc:creator><pubDate>Wed, 28 Feb 2007 12:45:44 GMT</pubDate></item></channel></rss>