Opakowanie JSSE tworzy pakiety o dwóch tach, które wymagają dwóch rozpakowań. Czemu?
Sprawdzam zachowanie naszej aplikacji Java w odniesieniu do szyfrowania i deszyfrowania jsse tls za pomocą połączonego klienta openssl.
Najpierw zauważyłem, że gdy wywoływam odwijanie danych klienta, zawsze rozpakowuje się zużywając 37 bajtów i wytwarzając 0. Kolejne rozpakowanie zużywa kilka bajtów i generuje niektóre.
Na początku myślałem, że klient najpierw zawinie pustą tablicę. Ale potem odkryłem, że kod jsse robi to samo, tyle że wytwarza 1 bajt zamiast 0.
Więc każde wezwanie dowrap
zużywa X bajtów i produkuje bajty Y, ale wymaga DWÓCHunwrap
s, podczas gdy pierwszy zużywa 37 bajtów i wytwarza 1 bajt, a drugi zużywa Y-37 bajtów i wytwarza X-1 bajtów.
Chociaż openssl i jsse robią prawie to samo, oczekuję, że będzie to poprawne. Chciałbym jednak wiedzieć, dlaczego tak się dzieje. Nie widzę powodu, który wymaga dodatkowych zasobów ...?