AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

md5.pas bringt anderes Ergebnis als php md5

Ein Thema von tofse · begonnen am 9. Sep 2013 · letzter Beitrag vom 11. Sep 2013
Antwort Antwort
Seite 1 von 2  1 2      
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#1

md5.pas bringt anderes Ergebnis als php md5

  Alt 9. Sep 2013, 07:54
Hallo,
ich habe verschiedene md5.pas getestet, alle möglichen, die ich im Netz gefunden habe, aber die Funktionen bringen immer ein anderes Ergebnis als die md5 Funktion von php.
Hat da irgendjemand eine Idee?
Delphi-Quellcode:
.....
var
   cryptpass:string;
    i:Integer;
    c:String;
    a,o,n:byte;
begin
    cryptpass:='';
    for i := 0 to Length(EditPW1.Text)-1 do
    begin
      c:=copy(EditPW1.Text,i+1,1);
      a:=ord(c[1]);
      o:=a-65;
      n:=(177+o+i);
      cryptpass:=cryptpass+chr(n);
    end;
    showmessage(cryptpass+#13+MD5Print(MD5String(cryptpass)));
...
Code:
<?php
$i=$c=$o=$n=$nc="";
$cryptpass="";
$test="123abc";      

for ($i=0;$i<strlen($test);$i++) {
      $c=substr($test,$i,1);
      $a=ord($c);            
      $o=($a-65);
      $n=(177+$o+$i);            
      $nc=chr($n);            
      $cryptpass.=$nc;
}
echo $cryptpass."<br>";
echo md5($cryptpass);
?>
Wie man im Anhang sieht, liegt es wirklich nur am md5 Teil, diese For Schleife davor (die übringens nicht von mir ist, die ich aber verwenden muss) erzeugt sowohl in php als auch in Delphi den gleichen String.

Also, vielleicht hat jemand eine md5.pas, die verwendet werden kann oder liegt es an was anderem?

Danke
Christof
Miniaturansicht angehängter Grafiken
md5.png  
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: md5.pas bringt anderes Ergebnis als php md5

  Alt 9. Sep 2013, 08:18
Hallo,

versuche es mal so...

Delphi-Quellcode:
var
   cryptpass:ansiString;
    i:Integer;
    c:ansiString;
    a,o,n:byte;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#3

AW: md5.pas bringt anderes Ergebnis als php md5

  Alt 9. Sep 2013, 08:21
Leider nicht, bringt genau das gleiche wie mit "String"

Christof
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: md5.pas bringt anderes Ergebnis als php md5

  Alt 9. Sep 2013, 08:36
Klappt es mit der Datei im Anhang?
Angehängte Dateien
Dateityp: pas DelphiMD5.pas (13,3 KB, 142x aufgerufen)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#5

AW: md5.pas bringt anderes Ergebnis als php md5

  Alt 9. Sep 2013, 08:44
JAAAAAAAAAAAAA, super

LowerCase(MD5DigestToStr(MD5String(cryptpass))) Funktioniert !
Vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

AW: md5.pas bringt anderes Ergebnis als php md5

  Alt 9. Sep 2013, 10:28
Bei Hashfunktionen sollte man immer eine Selbstest-Funktion mit an Bord haben!
Testvektoren findet man auf Wikipedia.
Also ungefähr so:
Delphi-Quellcode:
procedure MD5Selftest;
begin
  if MD5DigestToStr(MD5String('Franz jagt im komplett verwahrlosten Taxi quer durch Bayern')) <>
    'a3cca2b2aa1e3b5b3b5aad99a8529074{bitte alles in Goßbuchstaben, bin gerade zu tippfaul} then
    raise Exception.Create('MD5 Selftest failed');
end;
fork me on Github
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#7

AW: md5.pas bringt anderes Ergebnis als php md5

  Alt 9. Sep 2013, 15:34
{bitte alles in Goßbuchstaben, bin gerade zu tippfaul}
Dafür vergleiche ich Hashes gerne per AnsiCompareText, dann ist das upper/lowercase egal (nicht weil ich keine Konventionen bzgl. des cases hätte, sondern weil es spätestens beim Testen anderer Algo-Implementierungen dann doch wieder übersehen wird und zu Fehlersuche führt).
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

AW: md5.pas bringt anderes Ergebnis als php md5

  Alt 9. Sep 2013, 19:07
Hatte letztens ein ähnliches Problem. Eine MD5 Unit, die ich vor Ewigkeiten mal hier im Forum gefunden hatte, hat unter XE4 auf einmal mehr oder weniger zufällige Hashs produziert. Konnte das Problem leider nicht identifizieren, aber vermute, dass es am eingestreuten Assembler Code lag.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#9

AW: md5.pas bringt anderes Ergebnis als php md5

  Alt 10. Sep 2013, 04:20
Bei Hashfunktionen sollte man immer eine Selbstest-Funktion mit an Bord haben!
Testvektoren findet man auf Wikipedia.
Also ungefähr so:
Delphi-Quellcode:
procedure MD5Selftest;
begin
  if MD5DigestToStr(MD5String('Franz jagt im komplett verwahrlosten Taxi quer durch Bayern')) <>
    'a3cca2b2aa1e3b5b3b5aad99a8529074{bitte alles in Goßbuchstaben, bin gerade zu tippfaul} then
    raise Exception.Create('MD5 Selftest failed');
end;
Für solche Tests sind eigentlich Assertions prädestiniert – das ist schöner als if und raise Exception.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#10

AW: md5.pas bringt anderes Ergebnis als php md5

  Alt 10. Sep 2013, 07:53
Für solche Tests sind eigentlich Assertions prädestiniert – das ist schöner als if und raise Exception.
Kommt drauf an...
Hier habe ich if und raise verwendet, weil ich möchte dass die Prüfung auch in der Releaseversion der Software stattfindet um Manipulationen an sicherheitsrelevanten Funktionen vorzubeugen.
Ansonsten hast du natürlich recht.
fork me on Github
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz