2017-10-20 1 views
2

Aufgrund einiger Einschränkungen eines Clients füllen sie den Klartext mit 0x00 vor dem Weiterleiten an den AES-Algorithmus anstelle der normalen PKCS5/PKCS7- oder ähnlichen Auffüllung.Kann AES128 CBC 0-Padding verwenden?

Während es auf meiner Serverseite möglich ist, habe ich eine Frage, ob die Verwendung von 0-Padding funktioniert. Nehmen Sie ein Beispiel, dass der Klartext mit genau dem Füllzeichen 0 endet. Es ist für die Serverseite unmöglich, sie zu unterscheiden.

Ist 0-Padding eine der akzeptablen Padding-Methode und wenn ja, wie sollte meine Seite die Polsterung richtig behandeln?

Vielen Dank im Voraus.

Antwort

2

Nicht sicher, was mit "ASCII-Code 0" gemeint ist, nehme ich ein Byte mit dem Wert 0x00 an? (Ja hex ist immer noch eine Sache) Siehe Zero padding: Zero Padding kann nicht reversibel sein, wenn die ursprüngliche Datei mit einem oder mehreren Nullbytes endet, wodurch es unmöglich ist, zwischen Klartextdatenbytes und Füllbytes zu unterscheiden.

Null Padding (0x00) kann für Daten arbeiten, die nicht mit einer Null enden, ASCII-Text ist ein Beispiel, das funktioniert. Das veraltete PHP mcrypt tut dies und das Null-Padding verursacht Interoperabilitätsprobleme.

Also: ja Null Padding funktioniert für einige Daten wie Text, aber fehlschlägt für Binärdaten. Es ist am besten, es nicht zu verwenden, PKCS # 7.PKCS # 5 Padding ist eine bessere und allgemein verwendete Padding.

Verwandte Themen