© 2008 W.Ehrhardt Letzte Änderung 03. Okt. 2008
Start CRC/Hash Krypto Sonstiges Info Links English

Sonstiges

Hier findet man eine wachsende Liste von Utility- und Einzel-Quellcodes, die nicht CRC/Hash oder Krypto zuzuordnen sind: Util, PRNG, MPArith, zlib, Delphi CRT. Das Archiv std_inc.zip enthält immer die neueste Version der Includedatei std.inc.

Vor dem Herunterladen von Software von diesen Seiten bitte diesen rechtlichen Hinweis beachten.


Util

Das Archiv util_2008-06-27.zip enthält eine Ansammlung kleiner Units, die zum Teil früher separat angeboten wurden. Hilfedateien gibt es als Windows .hlp und als .tph für die BP7 IDE.

Letzte Änderungen:  Compvers V0.18 unterstützt FPC 2.2.2, Code für TP5-7 in Sort V1.18

PRNG

Letzte Änderung:  Richard P. Brents xor4096-Generator

Das Archiv prng_2007-04-25.zip enthält sechs schnelle schnelle Pseudo-Zufallszahlen-Generatoren mit wesentlich größeren Periodenlängen als die Pascal-Funktion random:  taus88 und taus113 (Pierre L'Ecuyer), tt800 und mt19937 (Makoto Matsumoto et al, mt19937 ist der bekannte Mersenne Twister), kiss123 (George Marsaglia), sowie xor4096 (Richard P. Brent). Alle benutzen Kontextrecords, so daß mehrere Generatoren unabhängig gleichzeitig benutzt werden können, sie sind nicht kryptographisch sicher.

Zusätzlich gibt es noch drei kryptographische Generatoren: Die Units und Testprogramme können mit den üblichen Compilern übersetzt werden: Pascal (TP5/5.5/6, BP7, VP 2.1, FPC 1.0/2.0) und Delphi (1..7/9/10). Die meisten Testprogramme brauchen die ministat- und/oder die hrtimer-Unit. Alle Generatoren exportieren folgende Funktionen (einige spezielle Prozeduren sind hier nicht aufgeführt):

procedure generic_init(var ctx: generic_ctx; seed: longint);
  {-Init context from seed}

procedure generic_init0(var ctx: generic_ctx);
  {-Init context from randseed}

procedure generic_next(var ctx: generic_ctx);
  {-Next step of PRNG}

procedure generic_read(var ctx: generic_ctx; dest: pointer; len: longint);
  {-Read len bytes from the PRNG to dest}

function  generic_long(var ctx: generic_ctx): longint;
  {-Next random positive longint}

function  generic_word(var ctx: generic_ctx): word;
  {-Next random word}

function  generic_double(var ctx: generic_ctx): double;
  {-Next random double [0..1) with 32 bit precision}

function  generic_double53(var ctx: generic_ctx): double;
  {-Next random double in [0..1) with 53 bit precision}

function  generic_selftest: boolean;
  {-Simple self-test of PRNG}
Tabelle der Generatoreigenschaften (C/B: CPU-Zyklen pro Byte, MB/s: Millionen Bytes pro Sekunde mit 1.8 GHz Pentium 4 / Windows 98, P7: Borland Pascal 7 Realmode mit 386 BASM; isaac wurde kompiliert mit {$define testing}):

Generator ctx Größe Periode ca. C/B P7 MB/s P7 C/B D6 MB/s D6
random (4) 2**32 79.0 22.7 7.5 239.0
taus88 16 2**88 80.5 22.3 6.5 275.8
taus113 20 2**113 83.0 21.6 8.3 217.3
kiss123 20 2**123 96.0 18.7 11.8 152.6
tt800 106 2**800 230.8 7.8 18.1 99.2
xor4096 522 2**4096 82.5 21.7 5.8 311.8
mt19937 2502 2**19937 220.3 8.1 8.3 216.2
aesr 290 2**128 236.0 7.6 28.4 63.2
salsar 202 2**70 109.3 16.4 14.4 124.8
isaac 2066 2**8295 109.5 16.3 9.1 197.8



MPArith

mpa_2008-10-03.zip: Dieses Archiv enthält Pascal-Quellcodes für Multipräzisions-Arithmetik für ganze, rationale und reelle Zahlen. Die Basisroutinen können mit den üblichen Pascalversionen übersetzt werden, die const-Parameter unterstützen (BP 7.0, VP 2.1, FPC 1.0/2.0/2.2 und Delphi-Versionen 1..7/9/10).

Separate Informationen gibt es auf der (englischen) Einführungsseite; Windows- und Borland-Pascal-Hilfedateien befinden sich im Archiv.

Letzte Änderungen:  Version 1.7.23 hat folgende neue/geänderte Funktionen; eine vollständige Liste mit kurzer Beschreibung findet man in der Funktionsliste:
Es gibt Testprogramme für die Verifikation der Funktionen und der Kompilierung; Demoprogramme sind enthalten u.a. für Pi-Berechnung, Ausdruckszerlegung und -Auswertung, sowie Faktorisierung mit Pollards rho- und (p-1)-, Williams (p+1)- und ECM-Methoden.

Meine Pascal-Routinen basieren auf vielen öffentlich zugänglichen Ressourcen (Quellcode-Bibliotheken, Bücher, Artikel); Links findet man im Referenzabschnitt.


zlib

zlibw114_2008-09-07.zip ist meine Pascal-Portierung der Version 1.1.4 von zlib, der freien, allgemeinen Bibliothek zur verlustfreien Daten-Komprimierung. Der Quellcode basiert auf PASZLIB 1.0 von Jacques Nomssi Nzali (entspricht zlib 1.1.2). Mein Code enthält offizielle Patches und Änderungen bis V1.1.4 und einige Ergebnisse einer E-Mail-Korrespondenz mit Mark Adler.

Weitere Änderungen sind in gzio/minigzip, inffixed.inc, minizip, zdeflate (Code für $ifdef FASTEST ist jetzt benutzbar), zlibh (z_assign als Workaround für einen lästigen D6/7/9-Bug), zutil, example (Fehler in test_sync usw. beseitigt).

Andere Erweiterungen: 1) zlibex-Unit mit anpassbaren deflate- und inflate-Routinen (incl. Testprogramm), die Unit wird im FZCA-Demoprogramm benutzt.   2) Pascal-Port des zpipe-Beispiels.  3) Code-Verbesserungen: BUILDFIXED und assert funktionieren jetzt, Bugfix in gzerror, usw.

Letzte Änderungen:  Die Bibliothek kann kompiliert werden mit BP7 (DOS/Win/DPMI), Delphi 1-7/9/10, Virtual Pascal V2.1 und Free Pascal 1.0/2.0/2.2. Die Unit-Struktur ist leicht geändert verglichen mit PASZLIB: zlib (Funktionen), zlibh (Typen/Konstanten), gzio (gz-Funktionen) sollten die einzigen Units in uses-Anweisungen der zlib-Applikationen sein.

Achtung: die zlib-Routinen sollten nur auf Dateien mit weniger als 2 GB angewendet werden (32 Bitzähler; Delphi eof-Fehler und/oder 32-Bit filesize Funktion).


Delphi CRT-Unit

Während der Entwicklung des mpint-Ausdrucksparsers wurden ein paar Abweichungen von Will de Witts bewährter Delphi-CRT-Unit im Vergleich zu BP7 festgestellt; ich habe deshalb eine etwas kompatiblere Unit erstellt.

dcrt_2006-11-08.zip ist eine vereinfachte Version von Will DeWitts Code mit einigen Fehlerkorrekturen (readkey, Zeileneingabe, erweiterte Tastencodes etc) Wills 'unit was based heavily off of the Borland CBuilder 5 RTL'. Wegen des unklaren Lizenzstatus von Wills Unit gilt für diese meine Unit auch nicht die zlib-Lizenz, sondern sie wird mit folgendem Ausschlußhinweis veröffentlicht:

Die Software wird ohne jegliche Zusagen oder Garantien bezüglich Funktionalität oder Funktionsfähigkeit abgegeben. Die Autoren übernehmen keine Verantwortung für Schäden, die durch die Benutzung der Software verursacht werden. Wird die Software benutzt, bitte auf die Herkunft verweisen und die Referenzen auf die anderen Autoren und Quellen beibehalten.

Wie auch immer: Wills bzw. Borlands Unit wurde radikal umgeschrieben und umgestellt. Leitanforderung war weitgehende Kompatibilität zur BP7-Unit.

Die Idee der Hardware/Software-Trennung der Tonerzeugung stammt von Rudy Velthuis' Freeware-Konsoleunit, aber die Implementation ist verschieden.

Die unterstützten Tastenkombination bei der Zeileneingabe sind von BP7 (^A, ^H, ^D, ^F, ^M, ^S, ^Z), der Paradigmenwechsel von readkey zu keypressed als Arbeitspferd findet sich bei FP. Die Tastencodes, -Übersetzungen und -Funktionalitäten wurden dem Phoenix-BIOS-Buch und einem mit BP7 kompilierten Testprogramm entnommen.

Hier sind Links zu den beschriebenen Programmen.

Es bleiben noch einige Kleinigkeiten zu tun für seltene spezielle erweiterte Tastenkombinationen (nationale Spezialcodes etc); aber dies wird bei Bedarf erledigt, wenn Fehler und Probleme beseitigt werden müssen.

Start CRC/Hash Krypto Sonstiges Info Links English