SHA-1



  • Hallo Gemeinde,

    ich möchte in mein Programm SHA-1 beibringen und das externe Libs, also habe ich mir einen Quellcode der nacht der Originalen Definition geschrieben ist mal angeschaut und habe da ein paar probleme da hinterher zu kommen:

    void SHA1::Reset()
    
    {
    
    	Length_Low			= 0;
    
    	Length_High			= 0;
    
    	Message_Block_Index	= 0;
    
    	H[0]		= 0x67452301;
    
    	H[1]		= 0xEFCDAB89;
    
    	H[2]		= 0x98BADCFE;
    
    	H[3]		= 0x10325476;
    
    	H[4]		= 0xC3D2E1F0;
    
    	Computed	= false;
    
    	Corrupted	= false;
    
    }
    

    Was sind das für definitionen? Ist das Hex-Code? Falls ja warum macht man das so? Bzw was hat das zu bedeuten...

    Dann steht da noch sowas im Code:

    Length_Low &= 0xFFFFFFFF; // Force it to 32 bits
    

    Bedeuted das, das somit einen String oder was auch immer auf eine Länge trimmen kann, koste es was es wolle? Oder verstehe ich das falsch?

    Meine Quelle ist: http://www.packetizer.com/security/sha1/

    Wäre super wenn jemand mich erleuchten würde.

    Kennt jemand eine Seite im Internet, wo so ein Code mal durchgekaut wird? Etwas zu lesen für mich...

    so long
    jd



  • Ja, das ist Hexcode bzw. das sind Zahlenwerte, die im Hexadezimalsystem dargestellt sind.

    Warum man sowas einsetzt? Dafür kann es verschiedene Gründe geben. Beispielsweise wird in deinem Beispiel 0xFFFFFFFF verwendet. Damit wird Length_Low auf 32 genutzte Bits gestutzt, falls es ein größerer Wert ist (mit bitweisem AND). Das geht nunmal viel einfacher, wenn man dafür vier mal FF notiert, da man ja weiß, dass FF ein Byte lang ist.

    Auch z.B. bei Bitmaps ist diese Notation sehr hilfreich, wenn du 32 Bit Farbtiefe mit 4 Kanälen hast (ARGB=Alpha, Rot, Grün, Blau). Du kannst einen Pixel ganz rot färben, indem du 0x00FF0000 zuweist. Das ist viel einfacher und transparenter, als 16711680 zu schreiben...



  • Hallo,

    Ok, das leuchtet mir ein. Danke für die Erklärung.


Log in to reply