Tablice bajtów rozdzielić na dwie

0

Witam,

Mam tablice bajtów która jest wypełniona wiadomością M mającą 18 bajtów oraz podpisem tej wiadomości który ma 128 bajtów, teraz problem polega na tym, że jak chce zaszyfrować przy pomocy RSA to blok danych jest za duży - przekracza granicę 117 bajtów (128-11 bo mam klucz 1024) - co powoduje wyjątek, oczywiście jak zwiększę rozmiar klucza to od razu zwiększy się podpis co razem z wiadomością przekracza kolejny 245 limit. Nie mogę użyć np AES'a bo zadanie polega na tym aby to był RSA i chyba celowo blok danych jest zawsze większy, więc chciałbym podzielić tablice w której jest podpis z wiadomością na dwie i wysłać osobno. Jednak coś mi nie idzie dzielenie tablicy, mógł by ktoś mnie poprawić ?

int pol_M1_S1 = (int) Math.floor(M1_S1.length/2);
                                        byte[] M1_S1_a = new byte[pol_M1_S1];
                                        byte[] M1_S1_b = new byte[pol_M1_S1];
                                        int p=0;
                                        while(p<pol_M1_S1) {M1_S1_a[p]=M1_S1[p];p++;}
                                        while(p>=pol_M1_S1) {M1_S1_b[p]=M1_S1[p];p++;}
                                        for(int i=0; i<M1_S1.length;i++){System.out.println("M1_S1 bajt("+i+"): "+M1_S1[i]);}
                                        for(int i=0; i<pol_M1_S1;i++){System.out.println("Pierwsza polowa M1_S1, tab M1_S1_a bajt("+i+"): "+M1_S1_a[i]);}
                                        for(int i=0; i<pol_M1_S1;i++){System.out.println("Druga polowa M1_S1, tab M1_S1_b bajt("+i+"): "+M1_S1_b[i]);}
0
int pol_M1_S1 = M1_S1.length/2;
byte[] M1_S1_a = new byte[pol_M1_S1];
byte[] M1_S1_b = new byte[pol_M1_S1];
int p = 0;
while(p<pol_M1_S1) 
{
    M1_S1_a[p] = M1_S1[p];
    p++;
}
p = 0;
while(p<pol_M1_S1) 
{
    M1_S1_b[p] = M1_S1[p+pol_M1_S1];
    p++;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1