AES, Buffer und Bytes

Kaji Lim

Mitglied
Hi,

ich will eine AES Verschluesselung für File Objekte implementieren.
Leider führt AES mich an meine Wissensgrenzen, aber man lernt ja sonst nix.
Bevor ich ein File Objekt Verschlüsseln kann, nehm ich mir doch lieber erstmal Strings vor,
bis zum File ist es ja dann nicht mehr weit, denke ich.

Als Vorlage dient mir das Programm von Sun.
Using AES with Java Technology

Springen wir direkt zur asHash()Methode.

Java:
		for (i = 0; i < buf.length; i++) {
			if (((int) buf[i] & 0xff) < 0x10)
				strbuf.append("0");

			strbuf.append(Long.toString((int) buf[i] & 0xff, 16));
		}


Was passiert bei append("0")? Hängt das Programm hier einfach den Wert an den neuen Stringbuffer an?

Um nochmal genauer darauf einzugehen:
Java:
if (((int) buf[i] & 0xff) < 0x10)
bzw.
strbuf.append(Long.toString((int) buf[i] & 0xff, 16));

Ich kenne mich mit Bytes nicht sonderlich aus, bin noch nicht so weit in meinem Semester :(
Ich hab kapiert, dass es sich um einen AND bit operator handelt. Wieso wird, wenn >0x10 (größer 15?)
eine 0 angehängt? buff könnte doch jeden Wert über 15 haben. Ich glaube ich habe das ganze Prinzip noch nicht verstanden.

Mehr will ich erstmal nicht fragen, reicht ja schon???:L

Kaji

Edit:
Ich hab schonmal kapiert, dass es sich bei der if Abfrage zum teil um eine Bit Operation handelt

buf AND 11111111, wobei da immer buf rauskommt, wenn ich mich nicht irre, weil buf ja nicht größer wird als 255, oder?
 
Zuletzt bearbeitet:

nazar

Mitglied
Du meinst asHex() und nicht asHash() oder?

Wenn ich totalen Blödsinn erzähle, entschuldige ich mich mal im vorraus. Zu großer Koffeinschock um klar zu denken. :X

Die Funktion wandelt dir den Input zeichenweise in Hexadezimal um.
Zur if-Abfrage: 0x9 ist vom Format her kürzer als 0x10. Bei der Umwandlung wird jetzt 0x09 draus.
Und da das überall der Fall sein kann, wird auch gleich der Buffer mit doppelter Länge reserviert.
 
Zuletzt bearbeitet:

tagedieb

Top Contributor
Sieh die mal den Wertebereich von
Code:
byte
an!

Anders als in C gibt es in Java keine
Code:
unsigned
primitiv types (ausser char).
Schau dir mal die Ausgabe von folgendem Code an. Das Ergebnis wird dich sicher ueberraschen.

Java:
		for (byte i = Byte.MIN_VALUE; i <= Byte.MAX_VALUE; i++) {
			System.out.println("byte=" + i + " / unsigned=" + (i & 0xff)
					+ " / hex=0x" + Long.toString((i & 0xff), 16));
			if (i == Byte.MAX_VALUE)
				break;
		}


Wieso wird, wenn >0x10 (größer 15?) eine 0 angehängt?

Falsch die Bedingung lautet
Code:
< 0x10
(kleiner 16). Weil Zahlen von 0-15 in Hex einstellig dargestellt werden und somit eine 0 angehaengt werden muss.

dez
Code:
15
-> hex
Code:
f
=
Code:
0f
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L buffer overflow Allgemeine Java-Themen 7
M Buffer-Vector einzeln und zusammen synchronisieren Allgemeine Java-Themen 4
P Buffer - Consumer Producer - Threads synchronisieren Allgemeine Java-Themen 15
M Auf Einträge im Buffer warten Allgemeine Java-Themen 7
P Sound Buffer prüfen Allgemeine Java-Themen 12
G Maximalgröße von byte[] buffer Allgemeine Java-Themen 7
N IOException: "Reading from an output buffer" ? Allgemeine Java-Themen 2
Icewind Buffer.... Allgemeine Java-Themen 7
D Buffer Overflow in Java möglich? Allgemeine Java-Themen 5
C Sound: Keine Line gefunden. Zu großer internal buffer? Allgemeine Java-Themen 3
C BufferedReader/BufferedWriter schreibt nicht alle Bytes Allgemeine Java-Themen 2
V Input/Output Austausch von Bytes zwischen C# und Java Allgemeine Java-Themen 3
RalleYTN Input/Output Clip als ein Array von Bytes? Allgemeine Java-Themen 2
J Temperatur aus bytes auslesen. Allgemeine Java-Themen 13
Q Bytes verschwinden im CipherInputStream Allgemeine Java-Themen 1
L Methoden Methode gibt mir beim verschlüsseln mit RSA 0 bytes aus ? Allgemeine Java-Themen 1
J Bytes aus Socket lesen Allgemeine Java-Themen 9
Q Datentypen Short aus Bytes - Signed -> Unsigned? Allgemeine Java-Themen 9
C Datentypen int in bytes zerlegen und wieder zusammen setzen Allgemeine Java-Themen 13
K Hexadezimale Bytes Allgemeine Java-Themen 6
B bereits gelesene Bytes herausfinden Allgemeine Java-Themen 10
M FIFO Queue: bytes in, float/double/etc out Allgemeine Java-Themen 5
S String zu binary und zurück - Problem mit unsigned/signed bytes Allgemeine Java-Themen 2
TiME-SPLiNTER Von Unix, InputStreams und Null Bytes Allgemeine Java-Themen 2
S Bytes oder Hex-Werte zu Assembler Code? Allgemeine Java-Themen 6
L bytes nach int (little endian bitshift) Allgemeine Java-Themen 12
J Receive eines Hex-Bytes über COM-Port Allgemeine Java-Themen 4
G Zwei bytes vergleichen Allgemeine Java-Themen 2
M Bytes in Datei schreiben Allgemeine Java-Themen 10
T Spezielle Bytes in Datei schreiben Allgemeine Java-Themen 7
F Einlesen von Bytes Allgemeine Java-Themen 9
reibi Größe Array aus bytes Allgemeine Java-Themen 14
G RXTX verschicken einzelener Bytes Allgemeine Java-Themen 8
G WAV-Samples bearbeiten oder: 2 Bytes -> short -> float Allgemeine Java-Themen 5
T Größe eine Variablen in Bytes? Allgemeine Java-Themen 22
G Mehrere Bytes auf einmal einlesen Allgemeine Java-Themen 4
P int -> 4 bytes Allgemeine Java-Themen 11
R Menge an Bytes eines OutputStreams ermitteln. Allgemeine Java-Themen 6
R Wieviele Bytes gesendet Allgemeine Java-Themen 3
T Bestimmte bytes in einer Datei ersetzen? Allgemeine Java-Themen 4
D 16-Bit int --> 2* 8-Bit Bytes Allgemeine Java-Themen 17
H Objekte verbrauchen immer mindestens 16 Bytes Allgemeine Java-Themen 3
W Array größer als 65536 Bytes Allgemeine Java-Themen 7
A RandomAccessFile - Bytes vom Anfang der Datei löschen Allgemeine Java-Themen 32
C Code of a method longer than 65535 bytes Allgemeine Java-Themen 3
L 8 bytes von bestimmter position weg lesen? Allgemeine Java-Themen 11
D 2 Bytes in ein int convertieren Allgemeine Java-Themen 2
B Umwandeln von Bytes in float Zahl (DataInputStream) Allgemeine Java-Themen 3
G 0 Bytes bei temporäre Datei. Warum? Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben