Hallo,
durch die Meldung gewisser Bugs in der
DEC (
Delphi Encryption Compendium) kam jetzt die Fragestellung auf,
wie ein gewisses
API funktionieren sollte.
Konkret geht es u.a. um diesen Bugreport:
https://github.com/MHumm/DelphiEncry...dium/issues/87.
Es gibt für die Blockchiffren auch die Möglichkeit mit Streams zu arbeiten.
Dazu gibt es EncodeStream und DecodeStream (beide DECCipherFormats.pas).
Als Parameter haben diese den Quellstream, den Zielstream, die Anzahl zu
bearbeitender Bytes und einen optionale OnProgress Eventhandler.
Außerdem gibt es eine Done Methode, diese führt Aufräumarbeiten durch, wenn man
das Cipher Objekt nicht gleich freigeben will sondern später für den nächsten Vorgang
wiederverwenden will.
Nun scheint es Problematisch (sowohl mit den vor einiger Zeit hinzugefügten Paddings für
unvollständige letzte Blöcke als auch für Authentifizierte Blockverkettungsmodes wie GCM,
wenn EncodeStream oder DecodeStream mehrfach auf den selben Quellstream angewendet werden,
um die Daten "abschnittsweise" zu verarbeiten.
Die Frage ist also, ob es überhaupt realistisch ist, für ein und den selben Quellstream
(bin nicht 100% fit in Streams, gerne eine gute Quelle nennen die erläutert wie die intern
funktionieren bzw. wie deren Verwendung erwartet wird) mehrfach EncodeStream oder DecodeStream
aufzurufen oder ob nicht sowieso immer erst alles im Quellstream gesammelt wird und dann einmalig
der Aufruf stattfindet.
Nur: was ist mit Datenmengen, die nicht in dem Speicher passen? Behandelt das der interne Stream
Aufbau schon passend? Oder wie würde sowas auf einen verschlüsselten Videostream angewendet
aussehen? WIe wäre da pseudocode mäßig der Ablauf zu erwarten?
Danke für alle Ideen/Meinungen, egal wie kontrovers.