SHA256 Verschlüsslung
Übersicht

PreakzBetreff: SHA256 Verschlüsslung |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo Liebe Community ich habe ein Problem & zwar kommt wenn ich mit Blitzmax ein SHA256 durchführe etwas anderes raus als wie bei der PHP variante.
Bei PHP wird Rnd Salt erzeugt und dieser dann so Code: [AUSKLAPPEN] hash("sha256",$pass."".$salt); verschlüsselt.
Danach wird der Salt und das verschlüsselte PW in die DB gespeichert. (Bei meiner Homepage klappt alles Prima mit PHP und dem Vergleich...) So aufjedenfall baue ich jetzt Code: [AUSKLAPPEN] $salt = getSalt($name);
$hashed_pass = hash("sha256",$pass."".$salt); nach dabei hole ich mir den verwendeten SALT aus der DB und verschlüssle das Passwort wieder mit dem SALT um den vergleich zu machen, jedoch kommt ein anderes Ergebnis raus. Hier mal der Code: Code: [AUSKLAPPEN] ' Connect
MySQL = TMySQL.Create("localhost", "root", "", "blablabla") If Not MySQL Then Print("Error: Can't connect to 'datenbank'") End EndIf Resulta:Int = CheckLogin("Admin", "blablabl") ' Show all entries 'ShowAllEntries() Print "" Print " -- Ready --" MySQL.Close() If Resulta Then Print (" RICHTIG ! ") Else Print("Falsch ! ") End If End Function ShowAllEntries() Query = "SELECT user_name FROM `users`" Result = MySQL.Query(Query) If Not Result Then Print("Error: Query failed") Print(" "+MySQL.GetError()) MySQL.Close() End EndIf Print(String(Result.Rows)+" Entrys:") For Row = EachIn Result Print("Name: "+Row.GetString(0)) Next Result.Free() End Function Function CheckLogin:Int(UserName:String, Passwort:String) Local User_Salt:String Local HashedPw:String Query = "SELECT `user_salt` FROM `users` WHERE `user_name` = '" + UserName + "' LIMIT 1" Result = MySQL.Query(Query) If Not Result Then Print("Error: Query failed bei Checklogin!") Print(" " + MySQL.GetError()) MySQL.Close() End If For Row = EachIn Result User_Salt = Row.GetString(0) Print ("User_Salt = " + User_Salt) Next Passwort = Passwort + User_Salt Print("Passwort + Usersalt ohne veränderung: " + Passwort + "") HashedPw = SHA256(Passwort) Print("Mein PW: " + HashedPw) Result.Free() Query = "SELECT user_password FROM `users` WHERE `user_name` = '" + UserName + "' LIMIT 1" Result = MySQL.Query(Query) If Not Result Then Print("Error: Query failed bei Checklogin PW Vergleich") Print(" " + MySQL.GetError()) MySQL.Close() End If For Row = EachIn Result Print ("ServePW: " + Row.GetString(0)) If Row.GetString(0) = HashedPw Then Return 1 Else Return 0 End If Next Result.Free() End Function Function SHA256$(in$) Local h0:Long = $6A09E667, h1:Long = $BB67AE85, h2:Long = $3C6EF372, h3:Long = $A54FF53A Local h4:Long = $510E527F, h5:Long = $9B05688C, h6:Long = $1F83D9AB, h7:Long = $5BE0CD19 Local k:Int[] = [$428A2F98, $71374491, $B5C0FBCF, $E9B5DBA5, $3956C25B, $59F111F1,.. $923F82A4, $AB1C5ED5, $D807AA98, $12835B01, $243185BE, $550C7DC3,.. $72BE5D74, $80DEB1FE, $9BDC06A7, $C19BF174, $E49B69C1, $EFBE4786,.. $0FC19DC6, $240CA1CC, $2DE92C6F, $4A7484AA, $5CB0A9DC, $76F988DA,.. $983E5152, $A831C66D, $B00327C8, $BF597FC7, $C6E00BF3, $D5A79147,.. $06CA6351, $14292967, $27B70A85, $2E1B2138, $4D2C6DFC, $53380D13,.. $650A7354, $766A0ABB, $81C2C92E, $92722C85, $A2BFE8A1, $A81A664B,.. $C24B8B70, $C76C51A3, $D192E819, $D6990624, $F40E3585, $106AA070,.. $19A4C116, $1E376C08, $2748774C, $34B0BCB5, $391C0CB3, $4ED8AA4A,.. $5B9CCA4F, $682E6FF3, $748F82EE, $78A5636F, $84C87814, $8CC70208,.. $90BEFFFA, $A4506CEB, $BEF9A3F7, $C67178F2] Local intCount:Long = (((in$.length + 8) Shr 6) + 1) Shl 4 Local data:Long[intCount] Local a:Long = 0 Local b:Long = 0 Local c:Long = 0 Local d:Long = 0 Local e:Long = 0 Local f:Long = 0 Local i:Long = 0 Local t:Long = 0 Local g:Long = 0 Local h:Long = 0 Local t0:Long = 0 Local t1:Long=0 For c=0 Until in$.length data[c Shr 2] = (data[c Shr 2] Shl 8) | (in$[c] & $FF) Next data[in$.length Shr 2] = ((data[in$.length Shr 2] Shl 8) | $80) Shl ((3 - (in$.length & 3)) Shl 3) data[data.length - 2] = (Long(in$.length) * 8) Shr 32 data[data.length - 1] = (Long(in$.length) * 8) & $FFFFFFFF For Local chunkStart:Long=0 Until intCount Step 16 a = h0 b = h1 c = h2 d = h3 e = h4 f = h5 g = h6 h = h7 Local w:Long[] = data[chunkStart..chunkStart + 16] w = w[..64] For i=16 To 63 w[i] = w[i - 16] + (Ror(w[i - 15], 7) ~ Ror(w[i - 15], 18) ~ (w[i - 15] Shr 3)).. + w[i - 7] + (Ror(w[i - 2], 17) ~ Ror(w[i - 2], 19) ~ (w[i - 2] Shr 10)) Next For i=0 To 63 t0 = (Ror(a, 2) ~ Ror(a, 13) ~ Ror(a, 22)) + ((a & b) | (b & c) | (c & a)) t1 = h + (Ror(e, 6) ~ Ror(e, 11) ~ Ror(e, 25)) + ((e & f) | (~e & g)) + k[i] + w[i] h = g ; g = f ; f = e ; e = d + t1 d = c ; c = b ; b = a ; a = t0 + t1 Next h0 :+ a ; h1 :+ b ; h2 :+ c ; h3 :+ d h4 :+ e ; h5 :+ f ; h6 :+ g ; h7 :+ h Next Return (Hex(h0) + Hex(h1) + Hex(h2) + Hex(h3) + Hex(h4) + Hex(h5) + Hex(h6) + Hex(h7)).ToLower() End Function Function Rol:Long(val:Long, shift:Long) Return (val Shl shift) | (val Shr (32 - shift)) End Function Function Ror:Long( val:Long, shift:Long ) Return (val Shr shift) | (val Shl (32 - shift)) End Function Function LEHex:String( val:Long ) Local out:String = Hex( val ) Return out[6..8] + out[4..6] + out[2..4] + out[0..2] End Function Ergebnis: (PW ist natürlich nicht blablal) Code: [AUSKLAPPEN] Mein VerschlüsseltesPW: 8d9dd3b6607f10eb9be449f9a48cbc46dad772c6c43832a716d0af92ea4b3267 PWwie es verschlüsselt in der DB ist: da449d7c4c5caad004d55ced4efdd6545cc35c8c953586dcc392a2ae16c94ba9 -- Ready -- Falsch ! So liegt das jetzt an der SHA256 Function oder mach ich irgendeinen Fehler ? |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das lässt sich eigentlich recht simpel eingrenzen; Ist ein Leerer String äquivalent zu
Code: [AUSKLAPPEN] e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
...dann ist die SHA256 korrekt und es muss an was anderem liegen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Hummelpups |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein ist es nicht.
Genau das hätte ich ihn auch machen lassen. Anstatt schwierige Strings hin und herzusenden erstmal mit einfachen Strings gucken, ob die PHP und BMax SHA256 die gleiche Ausgabe zurück gibt. Die BMax Version scheint nicht in Ordnung zu sein. BMax SHA256 mit "": e3e013b125c79700477ac3fb78026930134570b5590e766331f5527e958e37fe Grüße Das is ne SHA256 FUnktion die auch funktioniert Code: [AUSKLAPPEN] Function SHA256$(in$)
Local h0 = $6A09E667, h1 = $BB67AE85, h2 = $3C6EF372, h3 = $A54FF53A Local h4 = $510E527F, h5 = $9B05688C, h6 = $1F83D9AB, h7 = $5BE0CD19 Local k[] = [$428A2F98, $71374491, $B5C0FBCF, $E9B5DBA5, $3956C25B, $59F111F1,.. $923F82A4, $AB1C5ED5, $D807AA98, $12835B01, $243185BE, $550C7DC3,.. $72BE5D74, $80DEB1FE, $9BDC06A7, $C19BF174, $E49B69C1, $EFBE4786,.. $0FC19DC6, $240CA1CC, $2DE92C6F, $4A7484AA, $5CB0A9DC, $76F988DA,.. $983E5152, $A831C66D, $B00327C8, $BF597FC7, $C6E00BF3, $D5A79147,.. $06CA6351, $14292967, $27B70A85, $2E1B2138, $4D2C6DFC, $53380D13,.. $650A7354, $766A0ABB, $81C2C92E, $92722C85, $A2BFE8A1, $A81A664B,.. $C24B8B70, $C76C51A3, $D192E819, $D6990624, $F40E3585, $106AA070,.. $19A4C116, $1E376C08, $2748774C, $34B0BCB5, $391C0CB3, $4ED8AA4A,.. $5B9CCA4F, $682E6FF3, $748F82EE, $78A5636F, $84C87814, $8CC70208,.. $90BEFFFA, $A4506CEB, $BEF9A3F7, $C67178F2] Local intCount = (((in$.length + 8) Shr 6) + 1) Shl 4 Local data[intCount] For Local c=0 Until in$.length data[c Shr 2] = (data[c Shr 2] Shl 8) | (in$[c] & $FF) Next data[in$.length Shr 2] = ((data[in$.length Shr 2] Shl 8) | $80) Shl ((3 - (in$.length & 3)) Shl 3) data[data.length - 2] = (Long(in$.length) * 8) Shr 32 data[data.length - 1] = (Long(in$.length) * 8) & $FFFFFFFF For Local chunkStart=0 Until intCount Step 16 Local a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7 Local w[] = data[chunkStart..chunkStart + 16] w = w[..64] For Local i=16 To 63 w[i] = w[i - 16] + (Ror(w[i - 15], 7) ~ Ror(w[i - 15], 18) ~ (w[i - 15] Shr 3)).. + w[i - 7] + (Ror(w[i - 2], 17) ~ Ror(w[i - 2], 19) ~ (w[i - 2] Shr 10)) Next For Local i=0 To 63 Local t0 = (Ror(a, 2) ~ Ror(a, 13) ~ Ror(a, 22)) + ((a & b) | (b & c) | (c & a)) Local t1 = h + (Ror(e, 6) ~ Ror(e, 11) ~ Ror(e, 25)) + ((e & f) | (~e & g)) + k[i] + w[i] h = g ; g = f ; f = e ; e = d + t1 d = c ; c = b ; b = a ; a = t0 + t1 Next h0 :+ a ; h1 :+ b ; h2 :+ c ; h3 :+ d h4 :+ e ; h5 :+ f ; h6 :+ g ; h7 :+ h Next Return (Hex(h0) + Hex(h1) + Hex(h2) + Hex(h3) + Hex(h4) + Hex(h5) + Hex(h6) + Hex(h7)).ToLower() End Function Function Rol(val, shift) Return (val Shl shift) | (val Shr (32 - shift)) End Function Function Ror(val, shift) Return (val Shr shift) | (val Shl (32 - shift)) End Function Function LEHex$(val) Local out$ = Hex(val) Return out$[6..8] + out$[4..6] + out$[2..4] + out$[0..2] End Function Ausgabe von "" ist e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 |
||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
Preakz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja teste ich gleich... allerdings ist deine Methode nicht SuperStrict und ich weiß nicht welche datentypen ich geben soll... auch long ?
Also bei "" bei der Funktion die ich verwende kommt : Code: [AUSKLAPPEN] e3e013b125c79700477ac3fb78026930134570b5590e766331f5527e958e37fe
raus ... stimmt also nicht überein die von Hummelpups stimmt: Code: [AUSKLAPPEN] e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 WHEY ES KLAPPT ![]() ![]() Jetzt muss ich nurnoch die Function i.w. in Superstrict bekommn ![]() Okay habs auch hinbekommn hier die SHA256 Function in SuperStrict: Code: [AUSKLAPPEN] Function SHA256$(in$)
Local h0% = $6A09E667, h1% = $BB67AE85, h2:Int = $3C6EF372, h3% = $A54FF53A Local h4% = $510E527F, h5% = $9B05688C, h6:Int = $1F83D9AB, h7% = $5BE0CD19 Local k%[] = [$428A2F98, $71374491, $B5C0FBCF, $E9B5DBA5, $3956C25B, $59F111F1,.. $923F82A4, $AB1C5ED5, $D807AA98, $12835B01, $243185BE, $550C7DC3,.. $72BE5D74, $80DEB1FE, $9BDC06A7, $C19BF174, $E49B69C1, $EFBE4786,.. $0FC19DC6, $240CA1CC, $2DE92C6F, $4A7484AA, $5CB0A9DC, $76F988DA,.. $983E5152, $A831C66D, $B00327C8, $BF597FC7, $C6E00BF3, $D5A79147,.. $06CA6351, $14292967, $27B70A85, $2E1B2138, $4D2C6DFC, $53380D13,.. $650A7354, $766A0ABB, $81C2C92E, $92722C85, $A2BFE8A1, $A81A664B,.. $C24B8B70, $C76C51A3, $D192E819, $D6990624, $F40E3585, $106AA070,.. $19A4C116, $1E376C08, $2748774C, $34B0BCB5, $391C0CB3, $4ED8AA4A,.. $5B9CCA4F, $682E6FF3, $748F82EE, $78A5636F, $84C87814, $8CC70208,.. $90BEFFFA, $A4506CEB, $BEF9A3F7, $C67178F2] Local intCount% = (((in$.length + 8) Shr 6) + 1) Shl 4 Local data%[intCount] For Local c%=0 Until in$.length data[c Shr 2] = (data[c Shr 2] Shl 8) | (in$[c] & $FF) Next data[in$.length Shr 2] = ((data[in$.length Shr 2] Shl 8) | $80) Shl ((3 - (in$.length & 3)) Shl 3) data[data.length - 2] = (Long(in$.length) * 8) Shr 32 data[data.length - 1] = (Long(in$.length) * 8) & $FFFFFFFF For Local chunkStart%=0 Until intCount Step 16 Local a% = h0, b% = h1, c% = h2, d% = h3, e% = h4, f% = h5, g% = h6, h% = h7 Local w%[] = data[chunkStart..chunkStart + 16] w = w[..64] For Local i%=16 To 63 w[i] = w[i - 16] + (Ror(w[i - 15], 7) ~ Ror(w[i - 15], 18) ~ (w[i - 15] Shr 3)).. + w[i - 7] + (Ror(w[i - 2], 17) ~ Ror(w[i - 2], 19) ~ (w[i - 2] Shr 10)) Next For Local i%=0 To 63 Local t0% = (Ror(a, 2) ~ Ror(a, 13) ~ Ror(a, 22)) + ((a & b) | (b & c) | (c & a)) Local t1% = h + (Ror(e, 6) ~ Ror(e, 11) ~ Ror(e, 25)) + ((e & f) | (~e & g)) + k[i] + w[i] h = g ; g = f ; f = e ; e = d + t1 d = c ; c = b ; b = a ; a = t0 + t1 Next h0 :+ a ; h1 :+ b ; h2 :+ c ; h3 :+ d h4 :+ e ; h5 :+ f ; h6 :+ g ; h7 :+ h Next Return (Hex(h0) + Hex(h1) + Hex(h2) + Hex(h3) + Hex(h4) + Hex(h5) + Hex(h6) + Hex(h7)).ToLower() End Function Function Rol:Int(val%, shift%) Return (val Shl shift) | (val Shr (32 - shift)) End Function Function Ror:Int(val%, shift%) Return (val Shr shift) | (val Shl (32 - shift)) End Function Function LEHex$(val%) Local out$ = Hex(val) Return out$[6..8] + out$[4..6] + out$[2..4] + out$[0..2] End Function |
||
Hangman |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ab ins Codearchiv damit ![]() ![]() |
||
Ich habe Berthold gebrochen. |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Preakz: Erstmal gratz ![]() Und dann ne kleien anmerkung: Soweit ich mich erinner, ist blitzmax faul. Wenn irgendwo was nicht definiert is, wirds int. Ergo: alles wo er meckert, einfach zum int machen ![]() Ps: Ja ins codearchiv damit ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group