Aktuelle Zeit: 18.10.2017 13:03

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: AddCipherBuffer - Paketgröße nicht "frei wählbar"?
BeitragVerfasst: 07.05.2017 21:01 
Offline
Kommando SG1
Benutzeravatar

Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Hallo Leute,

bin gerade etwas verwirrt über das Verhalten von AddCipherBuffer in Bezug auf die AES Verschlüsselung.
Scheinbar wird bei jedem Aufruf von AddCipherBuffer() der übergebene Buffer einfach sofort verschlüsselt/entschlüsselt, egal welche Länge er hat, und auch wenn die mindestlänge oder ein vielfaches von 16 Bytes nicht erreicht wird.

Ich hätte nun erwartet, dass AddCipherBuffer() die "Pakete" selbst verwaltet und nur dann mit der verschlüsselt/entschlüsselt beginnt, wenn es erlaubt ist, und sich den Rest solange "merkt". Statt dessen, rechnet er einfach drauf los und produziert nur Müll. Zumal gibt es ja sogar FinishCipher(), und ich dachte damit werden dann "übriggebliebene" Bytes noch zu Ende Verschlüsselt.

Ich habe somit keine Chance einen 35 Byte langen Buffer zu zerlegen (außer in 16 und 19), wie man an diesem Beispiel sieht:
Code:
*Key    = AllocateMemory(16)
*Vector = AllocateMemory(16)
*Input  = AllocateMemory(64)
*Output = AllocateMemory(64)
PokeS(*Input, "Hallo Welt! Hallo Welt! Hallo Welt!", -1, #PB_Ascii)


TotalLength = 35

CompilerIf #True
   
   FirstPart = 18
   
   StartAESCipher(1, *Key, 128, *Key, #PB_Cipher_Encode|#PB_Cipher_CBC)
   AddCipherBuffer(1, *Input, *Output, FirstPart)
   AddCipherBuffer(1, *Input+FirstPart, *Output+FirstPart, TotalLength-FirstPart)
   FinishCipher(1)
   
CompilerElse
   
   AESEncoder(*Input, *Output, TotalLength, *Key, 128, *Key, #PB_Cipher_CBC)
   
CompilerEndIf

AESDecoder(*Output, *Input, TotalLength, *Key, 128, *Key, #PB_Cipher_CBC)

Debug PeekS(*Input, TotalLength, #PB_Ascii)


Muss ich jetzt wirklich selbst diese Verwaltung übernehmen, wie ich es schon bei meiner Version für Base64 gebraucht habe?
Sollte man so ein Verhalten nicht in der Hilfe dokumentieren?
Oder übersehe ich hier irgendwas?
Ist das vielleicht sogar als Bug zu bezeichnen?

_________________
Bild
 
BildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: AddCipherBuffer - Paketgröße nicht "frei wählbar"?
BeitragVerfasst: 08.05.2017 16:19 
Online
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Das ist ja fies. Das kommt mir tatsächlich wie ein Bug vor.

Dekodiert man wieder mit der selben Blockgröße funktioniert es wieder. Aber man will ja auch kompatibel sein zu anderen Programmen, die nicht wissen mit welchen einzelnen Blockgrößen man hier gearbeitet hat. Ich hätte auch erwartet, dass es so funktioniert wie du es beschrieben hast. Also mit eigener interner Blockverwaltung.
Code:
 *Key    = AllocateMemory(16)
*Vector = AllocateMemory(16)
*Input  = AllocateMemory(64)
*Output = AllocateMemory(64)
PokeS(*Input, "Hallo Welt! Hallo Welt! Hallo Welt!", -1, #PB_Ascii)


TotalLength = 35

CompilerIf #True
   
   FirstPart = 18
   
   StartAESCipher(1, *Key, 128, *Key, #PB_Cipher_Encode|#PB_Cipher_CBC)
   AddCipherBuffer(1, *Input, *Output, FirstPart)
   AddCipherBuffer(1, *Input+FirstPart, *Output+FirstPart, TotalLength-FirstPart)
   FinishCipher(1)
   
   StartAESCipher(1, *Key, 128, *Key, #PB_Cipher_Decode|#PB_Cipher_CBC)
   AddCipherBuffer(1, *Output, *Input, FirstPart)
   AddCipherBuffer(1, *Output+FirstPart, *Input+FirstPart, TotalLength-FirstPart)
   FinishCipher(1)
   
CompilerElse
   
   AESEncoder(*Input, *Output, TotalLength, *Key, 128, *Key, #PB_Cipher_CBC)
   AESDecoder(*Output, *Input, TotalLength, *Key, 128, *Key, #PB_Cipher_CBC)
   
CompilerEndIf



Debug PeekS(*Input, TotalLength, #PB_Ascii)

_________________
Freakscorner.de - Der Bastelkeller | Neustes Video: Unser Anet A8 3D-Drucker und sein Zusammenbau
Ubuntu Gnome 16.04.3 LTS x64, PureBasic 5.60 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 7 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye