Deutsch
Forum

MD5-Checksummen

 

Jac
de
Lad
Kann mir jemand sagen ob und wie ich MD5-Checksummen von Speicherbereichen erstellen kann?

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
25.11.2005  
 




Michael
Wodrich
Erster Treffer bei Google:



Das Ganze sogar mit einem Pseudocode gewürzt. Dort steht message für den von Dir gewünschten Speicherblock.

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
26.11.2005  
 




Jac
de
Lad
Hm, ob ich das umsetzen kann...

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
27.11.2005  
 




Jac
de
Lad
Ich kriegs irgendwie nicht hin, kann mir jemand helfen?

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
27.11.2005  
 




Michael
Wodrich
Ich habe mich bis zu LeftRotate vorgearbeitet. Anbei mein Code. Da müßte man dann mit Assembler nachhelfen.

Aber wenn sowieso Assembler: Vielleicht hilft uns Frank ja bei dieser Umsetzung (gefunden in einem Assembler-Source-Pool). Als Original-ZIP angefügt.
KompilierenMarkierenSeparieren
- hier ist alles in einem Hauptprogramm
(sollte in Unterprogramme eingeteilt werden)
- hier besteht die Nachricht immer aus 8-Bit langen Zeichen
(MD5 kann normalerweise jede Bitsequenz verarbeiten)
- hier ist der Message-Puffer auf 4K begrenzt
- Nachricht_Laenge ist normal 64-Bit (hier 32-Bit)
es fehlt die Funktion LeftRotate
(1. Parameter der Wert&, 2. Parameter die zu rotierenden Bits)
hier die Message, die verwurstet werden soll: (53 Zeichen = 424 Bit)
Puffer: 4K + 512 Bit = 4096 + 64 Bytes = 4160
Declare Nachricht$,Nachricht#,Nachricht_Laenge&,Nachricht_Chars%,Nachricht_Block%
Dim Nachricht#,4160
Nachricht$ = Die XProfan-Foren-Community find ich einfach toll...
Char Nachricht#,0 = Nachricht$
Def Floor(1) (!(1) - Int(!(1)))
Def bit_length(1) Len($(1)) * 8
MD5# ist der 128-Bit-Puffer = (4 * 32 Byte)
r&[64] hier als Bereich (läßt sich leichter initialisieren) (ebenso k&[64])
Declare MD5#, r#, k#
Struct MD5Struct = h0&, h1&, h2&, h3&
Dim MD5#, MD5Struct
Initialisiere die Variablen
MD5#.h0& = $67452301
MD5#.h1& = $EFCDAB89
MD5#.h2& = $98BADCFE
MD5#.h3& = $10325476
Definiere r wie folgt:
Dim r#, 256
Long r#, 0 = 7, 12, 17, 22,  7, 12, 17, 22,  7, 12, 17, 22,  7, 12, 17, 22
Long r#,16 = 5,  9, 14, 20,  5,  9, 14, 20,  5,  9, 14, 20,  5,  9, 14, 20
Long r#,32 = 4, 11, 16, 23,  4, 11, 16, 23,  4, 11, 16, 23,  4, 11, 16, 23
Long r#,48 = 6, 10, 15, 21,  6, 10, 15, 21,  6, 10, 15, 21,  6, 10, 15, 21
Dim k#, 256
Verwende den binären Nachkommateil vom Sinus von Integerwerten als Konstanten:
für alle i von 0 bis 63

WhileLoop 0,63

    Long k#,&loop = Floor(abs(sin(&loop + 1)) * 2^32)

EndWhile

Vorbereitung der Nachricht Nachricht$:
Nachricht_Laenge& = bit_length(Nachricht$)
Nachricht_Chars% = Len(Nachricht$)
512 Bit (64 Byte) - 448 Bit (56 Byte) = 64 Bit (8 Byte)
erweitere message um bit 1
erweitere message um bits 0 bis Länge von message in bits ? 448 (mod 512)
- hier gemogelt: 1 + 7 Füllbits 0
Nachricht_Block% = Nachricht_Chars%
Byte Nachricht#,Nachricht_Block% = 1
Inc Nachricht_Block%

While (Nachricht_Block% mod 64) < 56

    Byte Nachricht#,Nachricht_Block% = 0
    Inc Nachricht_Block%

EndWhile

erweitere message um message_laenge als 64-Bit little-endian Integer
hier wird wieder gemogelt: 64-Bit Länge = obere 32-Bit auf Null, untere 32-Bit eintragen
Long Nachricht#,Nachricht_Block% = Nachricht_Laenge&
Long Nachricht#,Nachricht_Block%+4 = 0
Add Nachricht_Block%,8
Declare iBlock%,w&[16], i%, a&,b&,c&,d&, f&,g&, temp&
Bloecke% = Nachricht_Block% Div 64
Clear iBlock%
Verarbeite die Nachricht in aufeinander folgenden 512-Bit Blöcken:
für alle 512-Bit Block von message

Repeat

    unterteile Block in 16 32-bit little-endian Worte w(i), 0 ? i ? 15

    WhileLoop 0,15

        w&[&loop] = Long(Nachricht#,iBlock% + &loop)

    EndWhile

    Initialisiere den Hash-Wert für diesen Block:
    a& = MD5#.h0&
    b& = MD5#.h1&
    c& = MD5#.h2&
    d& = MD5#.h3&
    //Hauptschleife:
    für alle i von 0 bis 63
    Clear i%

    Repeat

        If (i% >= 0) and (i% <= 15)

            f& = (b& and c&) or ((not b&) and d&)
            g& = i%

        ElseIf (i% >= 16) and (i% <= 31)

            f& = (d& and b&) or ((not d&) and c&)
            g& = (5 * i% + 1) mod 16

        ElseIf (i% >= 32) and (i% <= 47)

            f& = b& xor c& xor d&
            g& = (3 * i% + 5) mod 16

        ElseIf (i% >= 48) and (i% <= 63)

            f& = c& xor (b& or (not d&))
            g& = (7 * i%) mod 16

        EndIf

        temp& = d& : d& = c& : c& = b&
        b& = LeftRotate((a& + f + Long(k#,i%) + w&[g&]), Long(r#,i%)) + b&
        a& = temp&
        Inc i%

    Until i% >= 64

    Addiere den Hash-Wert des Blocks zur Summe der vorherigen Hashes:
    MD5#.h0& = MD5#.h0& + a&
    MD5#.h1& = MD5#.h1& + b&
    MD5#.h2& = MD5#.h2& + c&
    MD5#.h3& = MD5#.h3& + d&
    Add iBlock%,64

Until iBlock% >= Nachricht_Block%

den MD5# Bereich ausgeben oder sichern
.......
Speicher aufräumen
Dispose r#
Dispose k#
Dispose Nachricht#
Dispose MD5#

Schöne Grüße
Michael Wodrich

19 kB
Kurzbeschreibung: (ein Original)
Hochgeladen:30.11.2005
Ladeanzahl59
Herunterladen
 
Programmieren, das spannendste Detektivspiel der Welt.
30.11.2005  
 




Jac
de
Lad
WOW! DANKE! Probier ich gleich aus. Ich hab immer Probleme solche Dinge wie in Wikipedia richtig umzusetzen.

Ein Hoch auf Michael!

Jac

PS: XPIA versorgt mein System immer mit ExceptionFaults, deshalb kann ich mit Assembler vorerst nix anfangen. Mal sehen ob das noch rigendwie wird...
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
01.12.2005  
 




Jac
de
Lad
Nach der Freude kommt schnell die Ernüchterung. Weiß jemand, was LeftRotate darstellt?

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
01.12.2005  
 




Frank
Abbing
XPIA funktioniert nicht bei dir?
 
01.12.2005  
 




Jac
de
Lad
Hab ich dir doch schon mal geschrieben. Ich glaube aber das ist ein problem von MASM32.

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
01.12.2005  
 




Melanie
Brayer
MASM32 alternativen:
TSAM, NASM, BIN86... es gibt noch mehr, aber dort kenne ich nicht die Details, sorry.

Eine weiter alternative: Ich schicke dir meine compalierten libs für den MASM32 oder du schaust mal auf MASMFORUM.COM, da haben auch einige das Problem...
 
mele (¯`·.¸¸.{ WinXP Pro, XProfan9, XPIA }.¸¸.·´¯)

<Bugs zählen ist besser als Schafe zählen, da der Computer nur so schlau ist wie der der Mensch der ihn bedient.>
01.12.2005  
 




Jac
de
Lad
Was genau meinst du mir compilierten Libs (Ich kenne mich mit Assembler nicht aus, wollte grad damit anfange, doch da hat mir dieser Exception Fault einen Strich durch die Rechnung gemacht, ich konnte nicht mal die Beispiele bei XPIA benutzen...)

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
02.12.2005  
 




Jac
de
Lad
Hier, das passiert bei Franks Beispielen. (Immer, egal welches Beispiel...)

Jac

121 kB
Hochgeladen:02.12.2005
Ladeanzahl88
Herunterladen
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
02.12.2005  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.127 Betrachtungen

Unbenanntvor 0 min.
Walter20.11.2022
Member 361000504.08.2022
RudiB.27.10.2021
Sven Bader10.09.2021
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie