Bit-Padding


  • Mod

    gast-nutzer schrieb:

    ich verstehe jetzt allerdings nicht, inwiefern mir das helfen soll.

    Der Algorithmus ist ja nicht, dass du am Ende nur 1 Bit zufügst, sondern dass du zuerst eine 1 und dann solange 0 anfügen sollst, bis du 448 Bits hast. Das heißt, du sollst effektiv ein Byte mit Wert 10000000b = 128 und (448/8) - 5 -1 = 50 Bytes mit Wert 0 anhängen. Und das ist dann doch sehr einfach zu programmieren. (Falls du eine Nachricht hast, die nicht aus ganzen Bytes besteht, musst du dir den Startwert natürlich entsprechend anpassen.)

    Das meinte ich mit meiner ersten Antwort und Christoph vermutlich ebenfalls.



  • ok, jetzt wirds verständlicher. und wie hänge ich die 50 bytes an?


  • Mod

    gast-nutzer schrieb:

    ok, jetzt wirds verständlicher. und wie hänge ich die 50 bytes an?

    Wenn dir dazu nichts einfällt, dann solltest du dir ganz dringend erst einmal ein gutes Grundlagenbuch zu C reinziehen (z.B. K&R), bevor du dich an komplizierteren Programmen wie diesem versuchst. Das würde ja auch nichts bringen, dir diesen Schritt als Code zu zeigen, dann stehst du beim nächsten Schritt ja schon wieder hier und weißt nicht weiter. Und das ist ja gerade mal der erste Schritt von MD5 über den wir hier reden!



  • bist du dir sicher, dass das da drinnen steht?




  • Mod

    Ja. Da steht natürlich nicht md5 drinnen, aber hinterher kannst du selbststandig Programme schreiben und (sicherlich genau so wichtig) auch Ratschläge von anderen Programmierern verstehen. War ja eine ziemlich schwere Geburt in diesem Thread.



  • ok, dann vielen dank!



  • hallo, ich, der threadstarter, wollte mich hier nochmal zu wort melden.

    tut mir leid, aber ich muss diesen thread nochmal aus der versenkung holen.

    ich hab mir jetzt mehrere bücher über c angeschaft und durchgearbeitet. daran liegt es also nicht.

    meine frage ist nach wie vor: wie genau soll ich die bytes anhängen?
    1. soll ich das ganze bitweise machen? also muss ich irgendwie das array shiften?

    2. oder reicht es, wenn ich einfach ein großes array mache und dann eben die bestimmte anzahl an bytes auf 0 setze?



  • weiß denn keiner die antwort?



  • antwort nr. 2 war im prinzip richtig.
    der andere weg wäre ein wenig zu umständlich...

    was verstehst du unter einem großen array?
    so groß kann das gar nicht werden, denn
    die ganze nachricht mit der erweiterung wird quasi schaufelweise in 64 bytes portionen an den algorithmus übergeben.
    also wird die anzahl deiner genullten bytes maximal 63 bytes werden.
    das ist nicht sooo groß.


Anmelden zum Antworten