Ich versuche, ein Basic Encoding Rules Codec in D zu schreiben, und ich möchte die Möglichkeit haben, Daten mit unbestimmter Länge Codierung zu kodieren, in dem das Längenbyte auf 0x80
festgelegt ist und das Ende der Wertbytes mit einem Doppelpunkt abgegrenzt ist null 0x00 0x00
(Ende des Inhalts). Es gibt jedoch Zeiten, in denen eine doppelte Nullstelle Teil des tatsächlich codierten Werts ist. Wenn Sie beispielsweise eine OCTET STRING
haben, könnten zwei benachbarte Bytes 0x00 0x00
sein, was als END OF CONTENT
statt nur eines Teils des codierten Werts interpretiert würde, was zur Kürzung des codierten Werts führt (Best-Case-Szenario). Gibt es eine Möglichkeit, doppelte Nullen zu codieren, ohne dass sie als END OF CONTENT
interpretiert werden? Oder wird von Ihnen erwartet, nur Werte zu codieren, die keine doppelten Nullen haben? Ich habe noch nichts darüber in irgendeiner Spezifikation gefunden.Wie entkommst du Double-NULL-Oktetts innerhalb eines Oktetts, der mit unbestimmter Länge in BER codiert ist?
1
A
Antwort
2
Sie setzen nie einen reinen OCTET STRING-Inhalt zwischen 0x80 und 0x00 0x00. Stattdessen legst du [wahrscheinliche Stücke] von eindeutig kodierten OCTET STRING dorthin.
Mit anderen Worten, unbestimmter Länge codiert, chunked Single-Oktett "AB" ASCII-Zeichenfolge (zB 0x41 0x42 in hex) würde wie folgt aussehen:
0x24 0x80 0x04 0x01 0x41 0x04 0x1 0x42 0x00 0x00
^ ^ ^ ^
outer header inner chunk #1 inner chunk #2 outer EOO sentinel
Das Endergebnis ist, dass der Decoder nicht über um die tatsächliche Nutzlast zu scannen, die nach einer EOO-Markierung sucht, da die Nutzlastmargen durch die eindeutig Längencodierten Stücke klar definiert sind.
Verwandte Themen
- 1. vertica - String Oktetts Länge
- 2. Interpretieren ASN.1 unbestimmter Länge Codierung mit mehreren gekapselten Oktett-Strings
- 3. Internet Explorer - wie entkommst du einfachen Anführungszeichen
- 4. Wie entkommst du einem Dollarzeichen in Gettext .po-Datei?
- 5. Wie entkommst du einem reservierten Wort in Delphi?
- 6. Länge eines einzelnen Zeichens codiert in UTF-32
- 7. Erhalten einer Unterzeichenkette unbestimmter Länge, beginnend am Ende der Zeichenkette
- 8. Wie kann ein ASN.1-Wert mit universellen Tags ausgedrückt werden, wenn er mit der BER-Codierungsregel codiert wird?
- 9. Wie codiert man Byteadresse mit ungerader Länge für Little Endian?
- 10. Client-POST von unbestimmter Länge zu einem Server
- 11. Simulink BER-Tool
- 12. Wie lese ich die Länge eines Wertes innerhalb eines Objekts?
- 13. Glaubst du, dass Videoinhalte in JavaScript codiert werden können?
- 14. Wie deaktivierst du den rechten Mausklick innerhalb eines TextBoxes
- 15. Überprüfung der Länge eines Telefons mit PHP
- 16. Berechnung der Länge des Arrays innerhalb eines Objekts innerhalb eines Arrays
- 17. WPF: Fortschrittsbalken mit unbestimmter Dauer?
- 18. Umgang mit Browserunterschieden mit unbestimmter Checkbox
- 19. Wie "scrollt" eine Ansicht von unbestimmter Größe?
- 20. Wie unbestimmter NSProgressIndicator in NSOutlineView anzeigen?
- 21. Löschen unbestimmter Teilzeichenfolgen
- 22. die Länge eines bestimmten Objekts innerhalb eines Arrays
- 23. Curl Ergebnis ist codiert
- 24. Wie ändert man die Werte innerhalb eines Arrays dynamisch nach der Länge eines Strings?
- 25. Holen Sie die Länge eines Arrays innerhalb eines Perl-Hash
- 26. Validieren Sie die Länge eines Elementes in der Länge
- 27. Unbestimmter Rückgabetyp einer Funktion
- 28. Android unbestimmter Fortschrittsdialog Fortschrittsbalken Stil
- 29. Wie wird der Wert eines Objekts innerhalb eines Objekts aufgerufen?
- 30. Warum wird meine BER konstant, ist mein Code falsch?
In diesem Fall sollte der äußere Header als Konstruktor dargestellt werden, so dass er als 0x24 codiert werden sollte. Es wird das Bit 6 des Identifier-Tags (P/C) auf Constructed gesetzt. – pepo
@pepo Tatsächlich! Vielen Dank! ;-) –