AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Unnamed-Projekt > BigInt, MD5, RipeMD320, SHA, Streams usw.
Thema durchsuchen
Ansicht
Themen-Optionen

Unnamed-Projekt > BigInt, MD5, RipeMD320, SHA, Streams usw.

Ein Thema von himitsu · begonnen am 23. Mai 2008 · letzter Beitrag vom 19. Feb 2016
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.260 Beiträge
 
Delphi 12 Athens
 
#1

Re: Unnamed-Projekt > BigInt, MD5, RipeMD320, SHA, Stream

  Alt 26. Mai 2008, 13:17
@gammatester: ich könnte es notfalls auch als ZIP hochladen, aber 7zip ist doch inzwischen kein ungewöhnliches Format mehr?

Wei Dai's Crypto++ Seite schau ich mir gleich mal an.

und was den Link betrifft: hatte einfach in Google gesucht und das war einfach eine der ersten Seiten, wo ich genug und hübsche Prüfmuster fand.

deine weitere Anregung betreffend, hatte damals eigentlich nicht vor noch was an dieser Implementation zu verändern (ist zwar nicht die Schnellste, aber mir gefiehl sie so ganz gut) und sie lief auch eigentlich.
nja, direkt in die Projektdateien mach ich die Prüffunktionen wohl nicht rein, aber ich werd' mein kleines Prüfprogrämmhen weiter ausbauen (vielleicht mal mit 'ner übersichtlichen GUI).
Im Endefekt wird ja kaum mal was geändert, wenn es einmal läuft ... wird also vermutlich nicht häufig genutzt.

Zitat von sx2008:
Warum sind denn so viele Deklarationen aus Unit Windows enthalten?
Schließlich vergrössert die Unit Windows eine Anwendung nicht (und wenn doch, dann nur unwesentlich).
Da ich Erstens alles zusammen haben wollte,

Zweitens einige Änderungen gegenüber den Delphi-Deklarationen drin hab ... es ist mehr am MSDN ausgerichtet und außerdem hat Delphi einige Fehler drin (vorallem beim Unicode)

und Drittens hab ich (versuch es zumindestens) die aktuellsten Definitionen zu nutzen.
in Delphi ist noch nichtmal alles vom XP drin ... ich bin da nur auf'm Stand des WinSDK v6.1 (Windows Vista / Windows Server 2008)

oder was glaubst du warum noch andere WinAPIs für Delphi anbieten?
(z.B. die ganzen JEDI-APIs ... ich sortiere es nur etwas anderes und passe es noch etwas ans Projekt an)

Aber vorallem hab ich versucht alles loszuwerden, was 'nen Initialization-/Finalizationabschnitt enthält ... ich weiß, Windows.pas ist noch recht harmlos, aber wenn man einmal nicht konsequent ist .........




so, das kleine Testprojekt läuft erstmal.
jetzt muß ich nur noch die Fehler in ThxMD5 und ThxRMD320 finden

tja und dann sollte ich mir noch ein paar Prüfmuster für BigInt und Co. einfallen lassen
Angehängte Dateien
Dateityp: dpr unittest_713.dpr (12,5 KB, 20x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.260 Beiträge
 
Delphi 12 Athens
 
#2

Re: Unnamed-Projekt > BigInt, MD5, RipeMD320, SHA, Stream

  Alt 27. Mai 2008, 11:43
Sooooo, der Fehler in den Hashfunktionen hat sich angefunden ... mußte mal ein Backup zurückspielen und da fehlten noch die damals aktuellen Änderungen (die Adressen zu den neuen Varialenpositionen waren nicht mehr angepaßt)

tja und beim Filehash hatte sich ein witziger Fehler eingeschlichen ... "Final" wurde dopelt ausgeführt


neue Dateien und kleine Ergänzung ( [neu] ) siehe ersten Post

und hier im Anhang nicht wundern ... die 5 Fehlermeldungen sind korrekt, schließlich fehlt die Testdatei für jeweils den ersten Filehashtest. (oben im Pojekt ist aber alles drin)
Angehängte Dateien
Dateityp: exe unittest_518.exe (43,5 KB, 10x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.260 Beiträge
 
Delphi 12 Athens
 
#3

Re: Unnamed-Projekt > BigInt, MD5, RipeMD320, SHA, Stream

  Alt 31. Mai 2008, 12:32
Aufgrund des Themas
Exponentieren und dann Modulo: große Zahlen - speziell die Beiträge #30 bis #33
hab ich mal die BigInt-"Klasse" extrahiert.

Systemvoraussetzung ebenfalls mindestens Delphi/BDS 2006 incl. der nötigen Updates.

Wertebereich:
von -6.703.903.964.971.298.549.787.012.499.102.923.063. 739.682.910.296.196.688.861.780.
721.860.882.015.036.773.488.400.937.149.083.451.71 3.845.015.929.093.243.025.426.876.941.405.973.284. 973.216.824.503.042.048
bis +6.703.903.964.971.298.549.787.012.499.102.923.063 .739.682.910.296.196.688.861.780.
721.860.882.015.036.773.488.400.937.149.083.451.71 3.845.015.929.093.243.025.426.876.941.405.973.284. 973.216.824.503.042.047

+/- 6.703e153
-2^511 .. 2^511 - 1

512 Bit im Zweierkomplement = 152(153) Dezimalstellen
Int64 = 18(19) Dezimalstellen


die Klasse ist fast identisch mit dem Original
- Funktion .OneBit fehlt (braucht aber vermutlich eh keiner)
- TnStream durch TStream ersetzt
- interne Funktionen auf Private gesetzt
- keine ASM-Optimierungen (gibt aber eh kaum welche)
- und es wird natürlich nur diese eine Unit benötigt


Vieles wie beim "normalen" Integer auch nutzbar:

< <= = <> >= >
+ - div mod
and or xor not shl shr
Inc Dec

und als Funktionen in der Klasse und einiges nochmals als Einzelfunktion in der Unit (siehe nach der Klassendefinition) unter Anderem dieses:
DivMod Power LdExp LtExp LxExp ExpMod Log2 Log10 LogN Radic Sqr Sqrt Fibonacci RoundTo RoL RoR



da dieses einen "normalen" Record darstellt, ist auch keine Initialisierung/Finalisierung nötig, wie z.B. bei Objekten.
und man kann diesen Record auch wie einen verwenden ... z.B. Speichern und Laden:
Delphi-Quellcode:
Var BI: TBigInt;
  F: File...;
  S: TStream;
  P: Pointer;

BlockWrite(f, BI, SizeOf(BI));
S.Write(BI, SizeOf(BI));
MoveMemory(P, @BI, SizeOf(BI));


ich hoff mal es läuft alles soweit.
ansonsten wird es hiervon nicht all zu oft ein Update geben können.
(ist halt etwas Aufwand jede Änderung im großen Projekt auch gleich hier einzubauen)

[edit=Daniel G]Wertebereich zum Vermeiden des horizontalen Scrollens mal umgebrochen. Tut ja nicht not, sowas...[/edit]
Angehängte Dateien
Dateityp: pas bigint_203.pas (95,6 KB, 73x aufgerufen)
Dateityp: dpr biginttest_970.dpr (5,6 KB, 49x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von vsilverlord
vsilverlord

Registriert seit: 7. Jan 2008
Ort: Baden Württemberg- Hohenlohekreis
174 Beiträge
 
RAD-Studio 2009 Arc
 
#4

Re: Unnamed-Projekt > BigInt, MD5, RipeMD320, SHA, Stream

  Alt 31. Mai 2008, 17:24
Gibt es eine Möglichkeit, die Unit auch unter Delphi 7 enterprise zu nutzen?
Volker
~beware
Wizards First Rule:
People are stupid; given proper motivation, almost anyone will believe almost anything. Because people are stupid, they will believe a lie because they want to believe it’s true, or because they are afraid it might be true
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.260 Beiträge
 
Delphi 12 Athens
 
#5

Re: Unnamed-Projekt > BigInt, MD5, RipeMD320, SHA, Stream

  Alt 31. Mai 2008, 17:58
so wie sie jetzt ist, leider nicht (mein altes D7 fühlt sich auch schon etwas vernachlässigt )

Es wird halt von erst in Delphi 2006 eingeführten Compilerfeatures gebrauch gemacht.


ich könnte höchstens die Grundfunktionalität in externe Funktionen/Prozeduren umwandeln, dann könnte der Integer weiterhin ein Record bleiben,
nur läßt sich dieser record dann nicht mehr, wie ein "normaler" Integer, direkt in Formeln verwenden (also nur noch per Prozeduren zu berechnen)

oder als Objekt, aber dann wären wieder die schönen Recordeigenschaften weg
und ebenfalls wäre dieses nicht mehr direkt in Formeln zu verwenden.


vielleicht werd' ich den Nachfolger "TScaleInt" mal in eine alternative Klasse umwandeln,
dann ließe diese sich (zwar etwas eingeschränkt) auch in älteren Delphiversionen einsetzen.


@vsilverlord: du kannst dir aber auch ganz einfach mal Turbo Delphi (aka "abgespecktes Delphi 2006") ansehn ... dieses kennt auch die neuen Features



PS: TScaleInt und TBigFloat sind noch nicht fertig
TScaleInt = scalierbarer Integer
- mit allen eigenschaften eines Integers (also auch mit denen des TBigInt)
- dynamische Speicherverwaltung ... größe wächst mit dem Inhalt (wenn es sein muß, bis der RAM platzt)
(maximalgrößen wählbar)
- alle Dezimalstellen sind signifikant
- scalliert wird auf binärebene ... also im Dualsystem (es gibt aber Funktionen um die eingestellten Dualstellen in Dezimalstellen umzurechnen, oder zurück)
- es entspricht also in etwa dem Typ Currency


TBigFloat stellt einen vergrößerten Single/Double/Extended dar und hat demnach auch deren Eigenschaften
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von vsilverlord
vsilverlord

Registriert seit: 7. Jan 2008
Ort: Baden Württemberg- Hohenlohekreis
174 Beiträge
 
RAD-Studio 2009 Arc
 
#6

Re: Unnamed-Projekt > BigInt, MD5, RipeMD320, SHA, Stream

  Alt 31. Mai 2008, 19:18
ok danke für die Antwort. Eigentlich möchte ich mein Delphi 7 behalten, aber ich hab jetzt schon so lange an dem Projekt gearbeitet, dass es nicht daran scheitern soll, nur weil ich zu faul bin mir ein anderes Delphi zu holen. Vielleicht lade ich es nur für dieses eine Projekt runter
Volker
~beware
Wizards First Rule:
People are stupid; given proper motivation, almost anyone will believe almost anything. Because people are stupid, they will believe a lie because they want to believe it’s true, or because they are afraid it might be true
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.260 Beiträge
 
Delphi 12 Athens
 
#7

Re: Unnamed-Projekt > BigInt, MD5, RipeMD320, SHA, Stream

  Alt 2. Jun 2008, 12:31
Zum Glück ist ja TurboDelphi nicht sooo teuer


und die Sache mit TScaleInt kann noch etwas dauern ... häng noch etwas an der Recordvariante fest (und erst wenn es ferig ist, dann leite ich frühestens 'ne Klasse davon ab)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.260 Beiträge
 
Delphi 12 Athens
 
#8

Re: Unnamed-Projekt > BigInt, MD5, RipeMD320, SHA, Stream

  Alt 22. Jan 2009, 11:57
hatte zwar noch keine Zeit BigInt und Co. fertigzustellen,

aber die Hashfunktionen würden etwas überarbeitet
siehe Beitrag #16 in CRC32 für einzelne Wörter!
- Delphi 2009 Kompatibilität
- als Einzeldatei verwendbar
(Achtung: im ersten Post wurde die Delphi 2009-Änderungen noch nicht geupdatet)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#9

Re: Unnamed-Projekt > BigInt, MD5, RipeMD320, SHA, Stream

  Alt 18. Feb 2010, 07:40
Hi,

ich habe nun hier die "FHash_single" probiert:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  MD5 : ThMD5;
  s : String;
begin

  MD5.Calc('123');

  S := MD5.asHexString;
end;
Bei einem Online-Calc kommt das raus: 202cb962ac59075b964b07152d234b70
Bei D2010: 5fa285e1bebe0a6623e33afc04a1fbd5

Was mache ich falsch?
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#10

Re: Unnamed-Projekt > BigInt, MD5, RipeMD320, SHA, Stream

  Alt 18. Feb 2010, 08:57
Dein Delphi-String ist Unicode, der Online-Calc benutzt vermutlich ASCII
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 13:12 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