0 Tage Serie
java / intermediate
Snippet

Primitive Byte-Array-Stückelung und Hashing in Spring-Endpunkten

Die direkte Verarbeitung primitiver Arrays ermöglicht eine binäre Datenverarbeitung mit hohem Durchsatz. Die Iteration über feste Sub-Array-Abschnitte mittels Offset und Längenangaben berechnet Prüfsummen effizient ohne Zwischenobjekte auf dem Heap.

snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@RestController
@RequestMapping("/api/chunks")
public class ChunkProcessingController {
@PostMapping("/checksum")
public ResponseEntity<String> computeChecksum(@RequestBody byte[] rawPayload) {
int chunkSize = 1024;
int totalLength = rawPayload.length;
MessageDigest digest = getSha256Digest();
for (int offset = 0; offset < totalLength; offset += chunkSize) {
int currentChunkLength = Math.min(chunkSize, totalLength - offset);
digest.update(rawPayload, offset, currentChunkLength);
}
return ResponseEntity.ok(HexFormat.of().formatHex(digest.digest()));
}
private MessageDigest getSha256Digest() {
try {
return MessageDigest.getInstance("SHA-256");
} catch (NoSuchAlgorithmException e) {
throw new IllegalStateException("SHA-256 unavailable", e);
}
}
}
spring
Erklärung
1
public ResponseEntity<String> computeChecksum(@RequestBody byte[] rawPayload) {
Empfängt binäre Rohdaten direkt als primitives Byte-Array ohne Wrapper-Overhead.
2
for (int offset = 0; offset < totalLength; offset += chunkSize) {
Iteriert in durch die Chunk-Größe definierten Schrittweiten durch Array-Segmente.
3
digest.update(rawPayload, offset, currentChunkLength);
Übergibt spezifische Sub-Array-Bereiche über Array-Zeiger direkt an den kryptografischen Digest.