Verschlüsselung von Texten

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Gameprogman

Betreff: Verschlüsselung von Texten

BeitragSo, Feb 20, 2005 10:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hätte da mal mehrere Fragen:

1. wie verschlüsselt man texte so das man sie nur in dem Programm benutzen kann
2. wie prüft man ob dieser text benutzt wird
3. wie kann man prüfen ob in diesem verschlüsselten text etwas in der 1. oder 2. Zeile steht?
4. kann man eine .txt Datei direkt aus dem Programm heraus öffnen, wenn ja, wie?
5. wie kann man direkt aus dem Programm eine .txt Datei speichern?

Danke schon mal im Foraus auf Antworten...
www.bandradr.de ! Awesome !

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Feb 20, 2005 12:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Punkt 4 und 5 sollte ja wohl bekannt sein Oder?

erst mal die einfache Variante ohne Schleifen
zu 5
Code: [AUSKLAPPEN]
Dat = writefile("meinText.txt")
writeline dat,"meine erste Zeile"
closefile dat


zu 4
Code: [AUSKLAPPEN]
Dat = readfile("meinText.txt")
If  Not Eof(dat)  Then ; Prüfung auf Dateiende
b$ =readline (dat)
end if
closefile dat
print b$
waitkey()



Verschlüsselung geht mit Xor relativ einfach
einfach mal hier suchen!

Beschäftige dich erst mal mit Dateien, dann klappt das auch ...
[BB2D | BB3D | BB+]
 

sven123

BeitragSo, Feb 20, 2005 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Und Fals du nicht suchen willst!Hier das gibts irgendwo im Code Archiv!
Code: [AUSKLAPPEN]
lap$=Input$("Ursprungsdateipfad angeben:")
lu$=Input$("Arbeitskopiepfad angeben:")
co$=Input$("Schlüssel:")
file = ReadFile(lap$)
file_out = WriteFile(lu$)
file_out = WriteFile(lu$)
Repeat
line_$ = ReadLine$(file)
For I = 1 To Len(Line_$)
code$ = code$ + Chr$( Asc( Mid(line_$, I, 1) ) Xor co$)
Next 
Until Eof(file)
WriteLine file_out,code$
CloseFile file
CloseFile file_out
End

PS:Betreung ist alles
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken
 

noir

BeitragSo, Feb 20, 2005 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
auch wenn so etwas in ein paar sekunden entschlüsselt ist...
Fragt und man wird euch helfen

Das Alternativ BlitzBasic-Forum: FreeCoder
Einfach chatten: BlitzChat
Code&Text schnell und einfach pasten: FreePasting
  • Zuletzt bearbeitet von noir am So, März 06, 2005 12:27, insgesamt einmal bearbeitet
 

sven123

BeitragSo, Feb 20, 2005 15:51
Antworten mit Zitat
Benutzer-Profile anzeigen
@Noir der obige Code ist bloß als Hilfestellung zu eigenen Überlegungen gedacht.Auserdem wenn du dir den Code mal genauer anguckst wirst du feststellen das du den xor Faktor selbst einstellen musst und ich glaube nicht wenn du z.b den xor-Faktor 111.245 wählst das man die Verschlüsselung so schnell knackt.
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken
 

noir

BeitragSo, Feb 20, 2005 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
schon klar das dies nur ein beispiel is, wollte es nur sagen!

aber bedenke die bitverschiebung mit xor geht nur mit ganzzahlen(integer), also keine kommazahlen (111.245)

wenn du 111.245 nimmst, wird es einfach auf 111 abgerundet
Fragt und man wird euch helfen

Das Alternativ BlitzBasic-Forum: FreeCoder
Einfach chatten: BlitzChat
Code&Text schnell und einfach pasten: FreePasting
  • Zuletzt bearbeitet von noir am So, März 06, 2005 12:27, insgesamt 2-mal bearbeitet
 

sven123

BeitragSo, Feb 20, 2005 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ups stimmt!Naja versuch mal das zu knacken hab ich mit obigen Code verschlüsselt.Du wirst das knacken das ist klar aber ich denke das es schon länger als ein paar sekunden dauern wird.

l]@I\\M[\LGK@ZMK@\ 
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken

D2006

Administrator

BeitragSo, Feb 20, 2005 16:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Schlüssel: 40
Text: "Du hattest doch recht"


MfG
D2006
 

Klaas

BeitragSo, Feb 20, 2005 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
also wichtig ist das nicht immer der selbe XOR Wert genommen wird !
Denn dadurch kann man statistische Attacken fahren.

Hier mein ein simples Beispiel:
Dies ist nicht sicher sondern soll nur zeigen was man unbedingt machen muß um eine nicht ganz so offensichtige verschlüsselung zu machen
Code: [AUSKLAPPEN]

value$ = "mein test"
key$ = "123"

v$ = crypt$(key$,value$)
Print v
Print decrypt$("123",v$)
WaitKey

;----------------------------- simple crypting ---------------------------------
Function crypt$(key$,value$)
   cc = quer(key$)

   vl = Len(value)
   kl = Len(key)
   For i=1 To vl
      x = (cc Mod kl) + 1
      xk = Asc(Mid(key,x,1))
      cc = cc + 1
      xv = Asc(Mid(value,i,1))
      txt$ = txt$ + Chr(xv Xor xk)
   Next
   Return txt
End Function

Function decrypt$(key$,value$)
   cc = quer(key$)

   vl = Len(value)
   kl = Len(key)
   For i=1 To vl
      x = (cc Mod kl) + 1
      xk = Asc(Mid(key,x,1))
      cc = cc + 1
      xv = Asc(Mid(value,i,1))
      txt$ = txt$ + Chr(xv Xor xk)
   Next
   Return txt
End Function

Function quer(txt$)
   l = Len(txt$)
   For i=1 To l
      x = x + Asc(Mid(txt,i,1))
   Next
   Return x
End Function


Warum die Function quer ?
dadurch wird verhindert das ein teilweise richtiger Key schon teilweise lesbare Ergebnisse gibt, denn wenn sonst alle bis auf einen Wert im Key stimmt so könnte man schon etwas lesen.
(besser ist eine verschlüsselungs Matrix)

Code: [AUSKLAPPEN]

      x = (cc Mod kl) + 1
      xk = Asc(Mid(key,x,1))
      cc = cc + 1

hier wird immer der nächste Buchstabe des codes gewählt um nicht imer den gleichen Xor wert zu nehmen.
(auch hier ist eine Matrix sehr viel effektiver um die häufiogen wiederholungen zu umgehen)

[/quote]
 

noir

BeitragSo, Feb 20, 2005 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, das is schon gleich viel schwieriger zu knacken!

sven123 mit 40 hast du es ja mehr als leicht gemacht...
Fragt und man wird euch helfen

Das Alternativ BlitzBasic-Forum: FreeCoder
Einfach chatten: BlitzChat
Code&Text schnell und einfach pasten: FreePasting
  • Zuletzt bearbeitet von noir am So, März 06, 2005 12:28, insgesamt einmal bearbeitet

frigi

BeitragSo, Feb 20, 2005 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab mal ein programm geschrieben, um xor-verschlüsselungen zu knacken. damit ist es in ein paar millisekunden machbar.....also, sicher ist es mit nur einem schlüssel überhaupt nicht!
@noir: bei dem lösungsweg, den ich zum knacken gewählt habe ist es es ziemlich egal, ob es nun 40, 179, oder sonst irgent ein schlüssel ist. wieso hat er es dann also leicht gemacht?

Hubsi

BeitragSo, Feb 20, 2005 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Verschlüsselung des Chats:Code: [AUSKLAPPEN]
SeedRnd ***
temppass$=""
For i=1 To Len(passwort$)
  temppass$=temppass$+chr$(asc(mid$(passwort$,i,1)) Xor Rand(1,255))
Next
Viel Spaß Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

D2006

Administrator

BeitragSo, Feb 20, 2005 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
was soll denn das?

Ist ja sinnlos. Nicht zu gebrauchen. Was raus kommt ist ja immer anders, so dass man es ja auch nicht vergleichen kann.

MfG
 

Klaas

BeitragSo, Feb 20, 2005 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
nein, durch Seed wird schon immer das gleiche rauskommen ... solange zumindest sich nie der Seed bzw rand Befehl sich ändert

Das geht zwar aber dadurch ist diese verschlüsselung auf BB begrenzt .. nicht sehr gut wie ich meine

D2006

Administrator

BeitragSo, Feb 20, 2005 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
ich testete dies mal mit BladeRunner. Er hat mir eine EXE geschickt, aber es kamen trotzdem andere RAND Werte bei gleichem Seed raus. Das ging also nicht.

MfG
 

Klaas

BeitragSo, Feb 20, 2005 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
jau, sowas kann dabei rauskommen ... besser zum verschlüsseln ist z.B. der md5 Hash vom Passwort zu nehmen .. das sind nahezu auch Zufallszahlen.


Bei Netzwerk ist auch wichtig immer einn "Salt" zu benutzen. Der Server übergibt dem Client eine Zufallszeichenkette, dann fügt der Client seinem Passwort diesen String dazu und bildet daraus die Verschlüsselungsmatrix (einfacher ist es den oben genannten md5 aus den beiden Strings zu nehmen). der server kennt ja auch Passwort und Zufallsstring und entschlüsselt dann.

Wenn man das nicht macht kann man recht schnell auf das Passwort zurückschließen. Denn bei Netzwerkverkehr kennt man ja das Protokoll das ja immer gleich sein muß. Daraus kann man dann auf die Matrix schliessen und alle zukünftigen Übertragungen abhorchen. Wechselt man den Zufallsstring aber alle paar KB Übertragungsmenge haben statistische analysen nur sehr wenig material zum knacken.

D2006

Administrator

BeitragSo, Feb 20, 2005 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Interessanter Ansatz.

Hier übrigens ein kleines Porgramms, um die ganz einfachen XOR Verknüpfungen zu knacken. Basiert auf Häufigkeitsprüfungen.
Könnte bei dem ein oder anderen langsam sein, da viele Text Befehle.

Code: [AUSKLAPPEN]
Graphics 900,600,0,2
SetBuffer BackBuffer()

Dim anz$(255)
Dim check#(255)

SeedRnd MilliSecs()

key = Rand(0,255)




; DIESE VARIABLE WIRD VERSCHLÜSSELT MIT EINEM ZUFALLSKEY UND DANACH WIEDER ENTSCHLÜSSELT
; da XOR symmetrisch arbeitet, kann hier auch schon ein verschlüsselter Text angegeben werden
; trotzdem wird der wahrscheinlich am weitesten/besten entschlüsselte Text angezeigt

encrypt$ = "Das ist ein simpler Beispieltext. Eigentlich total simpel."

; ^^



decrypt$ = ""
For t=1 To Len(encrypt$)
   decrypt$ = decrypt$ + Chr$(Asc(Mid$(encrypt$,t,1)) Xor key)
Next   

co=0
Repeat
line_$ = decrypt$
code$=""
For I = 1 To Len(Line_$)
code$ = code$ + Chr$( Asc( Mid(line_$, I, 1) ) Xor co)
Next
anz$(co)=code$
co=co+1
Until co=256

For t=0 To 255
   check(t) = check_it(anz$(t))
   If (t Mod 2) Then
      Cls
      Rect 250,280,400,40,0
      Rect 250,280,400*t/255.0,40,1
      Flip
   EndIf   
Next   

sort()


start=0
While Not KeyHit(1)
Delay 5
Cls
y=0
For t=start To start+49
   c = 50+360*check#(t)
   If c>255 Then c=255
   Color c,c,c
   Text 10,y,t
   Text 40,y,Int(check#(t)*1000)/10.0
   Text 80,y,anz$(t)
   y=y+12
Next   

If KeyDown(200) And start>0 Then start=start-1
If KeyDown(208) And start<206 Then start=start+1
Flip
Wend
End


Function check_it#(dat$)
   Local t,a,cor#
   
   For t=1 To Len(dat$)
      If Asc(Mid$(dat$,t,1))<32 Then a=a+1
   Next
   If a>0 Then cor# = 1.0 / Float(a)
   cor# = cor# + check_it2#(dat$)
   cor# = cor# + check_it3#(dat$)
   cor# = cor# + check_it4#(dat$)
   cor# = cor# + check_it5#(dat$)
   cor# = cor# + check_it6#(dat$)
   cor# = cor# / 6.0
   If cor#<0 Then cor#=0
   Return cor#   

End Function
Function check_it2#(dat$)      ; seltsames Zeichen
   Local a,t,s
   For t=1 To Len(dat$)
      s = Asc(Mid$(dat$,t,1))
      If s>126 And s<188 Then a=a+1
   Next
   If s>0 Then Return 1.0 / Float(s)
   Return 1
End Function

Function check_it3#(dat$)      ; Leerzeichen
   Local t,a,spl#
   For t=1 To Len(dat$)
      If Mid$(dat$,t,1)=" " Then a=a+1
   Next
   spl# = Float(a)/Float(Len(dat$))
   spl# = 1-Abs(1 - spl#/.132)
   Return spl#
End Function   

Function check_it4#(dat$)      ; 'E's
   Local t,a,spl#
   For t=1 To Len(dat$)
      If Mid$(dat$,t,1)="e" Then a=a+1
   Next
   spl# = Float(a)/Float(Len(dat$))
   spl# = 1-Abs(1 - spl#/.137)
   Return spl#
End Function

Function check_it5#(dat$)      ; aus seltenem Bereich (ASCII>126)
   Local t,a,spl#
   For t=1 To Len(dat$)
      If Asc(Mid$(dat$,t,1))>126 Then a=a+1
   Next
   spl# = Float(a)/Float(Len(dat$))
   spl# = 1-Abs(1 - spl#/.014)
   Return spl#
End Function      

Function check_it6#(dat$)      ; verschiedene seltene Zeichen
   Local list$="²³$+*-/{[]}",d$,t,a,spl#,j
   For t=1 To Len(dat$)
      d$=Mid$(dat$,t,1)
      For j=1 To 11
         If d$ = Mid$(list$,j,1) Then a=a+1:Exit
      Next   
   Next
   spl# = Float(a)/Float(Len(dat$))
   spl# = 1-Abs(1 - spl#/.0015)
   Return spl#
End Function      

Function sort()
   Local tmp1$,tmp2#,ch

   Repeat
   ch=0
      For t=0 To 254
         If check(t) < check(t+1) Then
            tmp1$ = anz$(t)
            anz$(t)=anz$(t+1)
            anz$(t+1)=tmp1$
            tmp2# = check(t)
            check(t)=check(t+1)
            check(t+1)=tmp2#
            ch=1
         EndIf
      Next
   Until ch=0
End Function


Somit kann man zB Svens Text schnell entschlüsseln. Durch die Sortierung geht allerdings der Key verloren. Eventuell den Befehl "sort()" auskommentieren.

MfG
D2006

Hubsi

BeitragSo, Feb 20, 2005 20:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur gleiche Blitzversionen (also B3D, B+, blabla) ergeben bei gleichem SeedRnd immer gleiche Zufallsfolgen. Ich verwende es ja schon lange hier und es gab nie Probleme Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Klaas

BeitragSo, Feb 20, 2005 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
so, hier mal eine aufwändigere Verschlüsselung

Wie man beim Ausführen sieht entstehen kaum Wiederholungen obwohl der Inhalt voller Wiederholungen ist.

Also für nen Profi ist das sicher noch sehr lächerlich ... aber ich sag mal für den Durchschnitsprogger nicht zu knacken.

Wenn man den "Salt" wie oben erklärt häufig wechselt sollten sich kaum Wiederholungen finden um das ganze statistisch auszuwerten.
Das ganze läßt sich auch für Streams nutzen ... nur muß man sichergehen das man immer komplette Daten hat da das system sich mit jedem Zeichen ändert. Das kann bei UDP Streams probleme bereiten.

Dadurch das hier md5 benutzt wird ist auch egal wie lang das Passwort ist .. natürlich nicht wenn man Bruteforce methoden benutzt.

Code: [AUSKLAPPEN]

Graphics 800,600,32,2

Global key$
Global bkey$
Global cc,kl,bkl

value$ = "ebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebhebh"
mykey$ = "1"

initCrypt(mykey$)
v$ = crypt$(value$)
Print v
initCrypt(mykey$)
Print decrypt$(v$)

Print "Taste drücken um Wiederholungen im String zu finden"
WaitKey

;-------------------------------- Analyse --------------------------------------
Length = Len(v)
For i=3 To length
   For l2=1 To Length
      test$ = Mid(v$,l2,i)
      For l1=1 To Length
         substr$ = Mid(v$,l1,i)
         If(substr$ = test) Then
            If l1 <> l2 Then
               ;Print substr+" = "+test
               doubles = doubles + 1
            End If
         End If
      Next
   Next
Next
Print "Wiederholungen="+doubles
WaitKey

;----------------------------- simple crypting ---------------------------------
Function crypt$(value$)
   vl = Len(value)

   For i=1 To vl
      x = (cc Mod kl) + 1
      xk = Asc(Mid(key,x,1))
     cc = Asc(Mid(bkey,(i Mod bkl) + 1,1)) Xor xk

      xv = Asc(Mid(value,i,1))
      txt$ = txt$ + Chr(xv Xor xk)
   Next
   Return txt
End Function

Function decrypt$(value$)
   vl = Len(value)

   For i=1 To vl
      x = (cc Mod kl) + 1
      xk = Asc(Mid(key,x,1))
     cc = Asc(Mid(bkey,(i Mod bkl) + 1,1)) Xor xk

      xv = Asc(Mid(value,i,1))
      txt$ = txt$ + Chr(xv Xor xk)
   Next
   Return txt
End Function

Function initCrypt(newkey$)
   key$ = md5(newkey)
   kl = Len(key)

   cc = quer(newkey$)
   bkey$ = md5(key) + Left(key,15)

   bkl = Len(bkey)
End Function

Function quer(txt$)
   l = Len(txt$)
   For i=1 To l
      x = x + Asc(Mid(txt,i,1))
   Next
   Return x
End Function


;-------------------------------------md5-----------------------------
;Derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm

;This array needs to be here for Blitz
Dim MD5_x(0)

;The main MD5 function
Function MD5$(sMessage$)

    ;Pads the String as per the MD5 standard
    nblk = ((Len(sMessage$) + 8) Shr 6) + 1  ;number of 16-word blocks
 
   Dim MD5_x(nblk * 16 - 1)
    ;Zero pad the string
    For i = 0 To nblk * 16 - 1
      MD5_x(i) = 0
    Next
    ;Convert to array of "words"
    For i = 0 To (Len(sMessage$) - 1)
      MD5_x((i Shr 2)) = MD5_x((i Shr 2)) Or (Asc(Mid(sMessage$, (i + 1), 1)) Shl ((i Mod 4) * 8))
    Next
    MD5_x((i Shr 2)) = MD5_x((i Shr 2)) Or (128 Shl (((i) Mod 4) * 8))
    MD5_x(nblk * 16 - 2) = Len(sMessage$) * 8
   
   ;Set initial values
    MD5_a = 1732584193 ;&H67452301
    MD5_b = -271733879 ;&HEFCDAB89
    MD5_c = -1732584194 ;&H98BADCFE
    MD5_d = 271733878 ;&H10325476

   ;Loop through the words
    For k = 0 To (nblk * 16 - 1) Step 16
        MD5_AA = MD5_a
        MD5_BB = MD5_b
        MD5_CC = MD5_c
        MD5_DD = MD5_d
    ;Round 1
        MD5_a = MD5_FF(MD5_a, MD5_b, MD5_c, MD5_d, MD5_x(k + 0), 7, -680876936) ;&HD76AA478
        MD5_d = MD5_FF(MD5_d, MD5_a, MD5_b, MD5_c, MD5_x(k + 1), 12, -389564586) ;&HE8C7B756
        MD5_c = MD5_FF(MD5_c, MD5_d, MD5_a, MD5_b, MD5_x(k + 2), 17, 606105819 );&H242070DB
        MD5_b = MD5_FF(MD5_b, MD5_c, MD5_d, MD5_a, MD5_x(k + 3), 22, -1044525330) ;&HC1BDCEEE
        MD5_a = MD5_FF(MD5_a, MD5_b, MD5_c, MD5_d, MD5_x(k + 4), 7, -176418897) ;&HF57C0FAF
        MD5_d = MD5_FF(MD5_d, MD5_a, MD5_b, MD5_c, MD5_x(k + 5), 12, 1200080426 );&H4787C62A
        MD5_c = MD5_FF(MD5_c, MD5_d, MD5_a, MD5_b, MD5_x(k + 6), 17, -1473231341) ;&HA8304613
        MD5_b = MD5_FF(MD5_b, MD5_c, MD5_d, MD5_a, MD5_x(k + 7), 22, -45705983) ;&HFD469501
        MD5_a = MD5_FF(MD5_a, MD5_b, MD5_c, MD5_d, MD5_x(k + 8), 7, 1770035416) ;&H698098D8
        MD5_d = MD5_FF(MD5_d, MD5_a, MD5_b, MD5_c, MD5_x(k + 9), 12, -1958414417 );&H8B44F7AF
        MD5_c = MD5_FF(MD5_c, MD5_d, MD5_a, MD5_b, MD5_x(k + 10), 17, -42063 );&HFFFF5BB1
        MD5_b = MD5_FF(MD5_b, MD5_c, MD5_d, MD5_a, MD5_x(k + 11), 22, -1990404162) ;&H895CD7BE
        MD5_a = MD5_FF(MD5_a, MD5_b, MD5_c, MD5_d, MD5_x(k + 12), 7, 1804603682) ;&H6B901122
        MD5_d = MD5_FF(MD5_d, MD5_a, MD5_b, MD5_c, MD5_x(k + 13), 12, -40341101) ;&HFD987193
        MD5_c = MD5_FF(MD5_c, MD5_d, MD5_a, MD5_b, MD5_x(k + 14), 17, -1502002290) ;&HA679438E
        MD5_b = MD5_FF(MD5_b, MD5_c, MD5_d, MD5_a, MD5_x(k + 15), 22, 1236535329) ;&H49B40821
    ;Round 2
        MD5_a = MD5_GG(MD5_a, MD5_b, MD5_c, MD5_d, MD5_x(k + 1), 5, -165796510) ;&HF61E2562
        MD5_d = MD5_GG(MD5_d, MD5_a, MD5_b, MD5_c, MD5_x(k + 6), 9, -1069501632) ;&HC040B340
        MD5_c = MD5_GG(MD5_c, MD5_d, MD5_a, MD5_b, MD5_x(k + 11), 14, 643717713) ;&H265E5A51
        MD5_b = MD5_GG(MD5_b, MD5_c, MD5_d, MD5_a, MD5_x(k + 0), 20, -373897302) ;&HE9B6C7AA
        MD5_a = MD5_GG(MD5_a, MD5_b, MD5_c, MD5_d, MD5_x(k + 5), 5, -701558691) ;&HD62F105D
        MD5_d = MD5_GG(MD5_d, MD5_a, MD5_b, MD5_c, MD5_x(k + 10), 9, 38016083) ;&H2441453
        MD5_c = MD5_GG(MD5_c, MD5_d, MD5_a, MD5_b, MD5_x(k + 15), 14, -660478335) ;&HD8A1E681
        MD5_b = MD5_GG(MD5_b, MD5_c, MD5_d, MD5_a, MD5_x(k + 4), 20, -405537848) ;&HE7D3FBC8
        MD5_a = MD5_GG(MD5_a, MD5_b, MD5_c, MD5_d, MD5_x(k + 9), 5, 568446438) ;&H21E1CDE6
        MD5_d = MD5_GG(MD5_d, MD5_a, MD5_b, MD5_c, MD5_x(k + 14), 9, -1019803690) ;&HC33707D6
        MD5_c = MD5_GG(MD5_c, MD5_d, MD5_a, MD5_b, MD5_x(k + 3), 14, -187363961) ;&HF4D50D87
        MD5_b = MD5_GG(MD5_b, MD5_c, MD5_d, MD5_a, MD5_x(k + 8), 20, 1163531501) ;&H455A14ED
        MD5_a = MD5_GG(MD5_a, MD5_b, MD5_c, MD5_d, MD5_x(k + 13), 5, -1444681467) ;&HA9E3E905
        MD5_d = MD5_GG(MD5_d, MD5_a, MD5_b, MD5_c, MD5_x(k + 2), 9, -51403784) ;&HFCEFA3F8
        MD5_c = MD5_GG(MD5_c, MD5_d, MD5_a, MD5_b, MD5_x(k + 7), 14, 1735328473) ;&H676F02D9
        MD5_b = MD5_GG(MD5_b, MD5_c, MD5_d, MD5_a, MD5_x(k + 12), 20, -1926607734) ;&H8D2A4C8A
    ;Round 3
        MD5_a =  MD5_HH(MD5_a, MD5_b, MD5_c, MD5_d, MD5_x(k + 5), 4, -378558) ;&HFFFA3942
        MD5_d =  MD5_HH(MD5_d, MD5_a, MD5_b, MD5_c, MD5_x(k + 8), 11, -2022574463) ;&H8771F681
        MD5_c = MD5_HH(MD5_c, MD5_d, MD5_a, MD5_b, MD5_x(k + 11), 16, 1839030562) ;&H6D9D6122
        MD5_b = MD5_HH(MD5_b, MD5_c, MD5_d, MD5_a, MD5_x(k + 14), 23, -35309556) ;&HFDE5380C
        MD5_a =  MD5_HH(MD5_a, MD5_b, MD5_c, MD5_d, MD5_x(k + 1), 4, -1530992060) ;&HA4BEEA44
        MD5_d = MD5_HH(MD5_d, MD5_a, MD5_b, MD5_c, MD5_x(k + 4), 11, 1272893353) ;&H4BDECFA9
        MD5_c = MD5_HH(MD5_c, MD5_d, MD5_a, MD5_b, MD5_x(k + 7), 16, -155497632) ;&HF6BB4B60
        MD5_b = MD5_HH(MD5_b, MD5_c, MD5_d, MD5_a, MD5_x(k + 10), 23, -1094730640) ;&HBEBFBC70
        MD5_a = MD5_HH(MD5_a, MD5_b, MD5_c, MD5_d, MD5_x(k + 13), 4, 681279174) ;&H289B7EC6
        MD5_d = MD5_HH(MD5_d, MD5_a, MD5_b, MD5_c, MD5_x(k + 0), 11, -358537222) ;&HEAA127FA
        MD5_c = MD5_HH(MD5_c, MD5_d, MD5_a, MD5_b, MD5_x(k + 3), 16, -722521979) ;&HD4EF3085
        MD5_b = MD5_HH(MD5_b, MD5_c, MD5_d, MD5_a, MD5_x(k + 6), 23, 76029189) ;&H4881D05
        MD5_a = MD5_HH(MD5_a, MD5_b, MD5_c, MD5_d, MD5_x(k + 9), 4, -640364487) ;&HD9D4D039
        MD5_d = MD5_HH(MD5_d, MD5_a, MD5_b, MD5_c, MD5_x(k + 12), 11, -421815835) ;&HE6DB99E5
        MD5_c = MD5_HH(MD5_c, MD5_d, MD5_a, MD5_b, MD5_x(k + 15), 16, 530742520) ;&H1FA27CF8
        MD5_b = MD5_HH(MD5_b, MD5_c, MD5_d, MD5_a, MD5_x(k + 2), 23, -995338651) ;&HC4AC5665
    ;Round 4
        MD5_a = MD5_II(MD5_a, MD5_b, MD5_c, MD5_d, MD5_x(k + 0), 6, -198630844) ;&HF4292244
        MD5_d = MD5_II(MD5_d, MD5_a, MD5_b, MD5_c, MD5_x(k + 7), 10, 1126891415) ;&H432AFF97
        MD5_c = MD5_II(MD5_c, MD5_d, MD5_a, MD5_b, MD5_x(k + 14), 15, -1416354905) ;&HAB9423A7
        MD5_b = MD5_II(MD5_b, MD5_c, MD5_d, MD5_a, MD5_x(k + 5), 21, -57434055) ;&HFC93A039
        MD5_a = MD5_II(MD5_a, MD5_b, MD5_c, MD5_d, MD5_x(k + 12), 6, 1700485571) ;&H655B59C3
        MD5_d = MD5_II(MD5_d, MD5_a, MD5_b, MD5_c, MD5_x(k + 3), 10, -1894986606) ;&H8F0CCC92
        MD5_c = MD5_II(MD5_c, MD5_d, MD5_a, MD5_b, MD5_x(k + 10), 15, -1051523) ;&HFFEFF47D
        MD5_b = MD5_II(MD5_b, MD5_c, MD5_d, MD5_a, MD5_x(k + 1), 21, -2054922799) ;&H85845DD1
        MD5_a = MD5_II(MD5_a, MD5_b, MD5_c, MD5_d, MD5_x(k + 8), 6, 1873313359) ;&H6FA87E4F
        MD5_d = MD5_II(MD5_d, MD5_a, MD5_b, MD5_c, MD5_x(k + 15), 10, -30611744) ;&HFE2CE6E0
        MD5_c = MD5_II(MD5_c, MD5_d, MD5_a, MD5_b, MD5_x(k + 6), 15, -1560198380 );&HA3014314
        MD5_b = MD5_II(MD5_b, MD5_c, MD5_d, MD5_a, MD5_x(k + 13), 21, 1309151649) ;&H4E0811A1     
        MD5_a = MD5_II(MD5_a, MD5_b, MD5_c, MD5_d, MD5_x(k + 4), 6, -145523070) ;&HF7537E82
        MD5_d = MD5_II(MD5_d, MD5_a, MD5_b, MD5_c, MD5_x(k + 11), 10, -1120210379) ;&HBD3AF235
        MD5_c = MD5_II(MD5_c, MD5_d, MD5_a, MD5_b, MD5_x(k + 2), 15, 718787259) ;&H2AD7D2BB
        MD5_b = MD5_II(MD5_b, MD5_c, MD5_d, MD5_a, MD5_x(k + 9), 21, -343485551) ;&HEB86D391

        MD5_a = MD5_a + MD5_AA
        MD5_b = MD5_b + MD5_BB
        MD5_c = MD5_c + MD5_CC
        MD5_d = MD5_d + MD5_DD
    Next
   
    Return (WordToStr$(MD5_a) + WordToStr$(MD5_b) + WordToStr$(MD5_c) + WordToStr$(MD5_d))
End Function

Function MD5_F(x, y, z)
   Return (x And y) Or (~(x) And z)
End Function

Function MD5_G(x, y, z)
    Return (x And z) Or (y And (~(z)))
End Function

Function MD5_H(x, y, z)
    Return (x Xor y Xor z)
End Function

Function MD5_I(x, y, z)
    Return (y Xor (x Or (~(z))))
End Function

Function MD5_FF(a, b, c, d, x, s, ac)
    a = (a + ((MD5_F(b, c, d)+ x)+ ac))
    a = RotateLeft(a, s)
    Return a + b
End Function

Function MD5_GG(a, b, c, d, x, s, ac)
    a = (a + ((MD5_G(b, c, d) + x) + ac))
    a = RotateLeft(a, s)
    Return a + b
End Function

Function MD5_HH(a, b, c, d, x, s, ac)
    a = (a + ((MD5_H(b, c, d) + x) + ac))
    a = RotateLeft(a, s)
    Return a + b
End Function

Function MD5_II(a, b, c, d, x, s, ac)
    a = (a + ((MD5_I(b, c, d) + x) + ac))
    a = RotateLeft(a, s)
    Return a + b
End Function

Function RotateLeft(lValue, iShiftBits)
    Return (lValue Shl iShiftBits) Or (lValue Shr (32 - iShiftBits))
End Function

Function WordToStr$(lValue)
    For lCount = 0 To 3
        lByte = (lValue Shr lCount * 8) And 255
        ToHex$ = ToHex$ + Chr(lByte)
    Next
   Return ToHex$
End Function

BladeRunner

Moderator

BeitragMo, Feb 21, 2005 8:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Dee hat da was durcheinander geschmissen: bei gleichem seed von gleicher Blitzversion klappte es schon.
was nicht ging war dass Dee (Blitz+) und ich (B3D) dasselbe .bb-file verwendeten. Daher musste ich ihm ja die .exe schicken, dann ging es nämlich.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group