AES, pytanko czemu nie działa

0
public static String AESc(String input, String key) {
        byte[] crypted = null;
        try {
            SecretKeySpec skey = new SecretKeySpec(key.getBytes(), "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, skey);
            crypted = cipher.doFinal(input.getBytes());
        } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | IllegalBlockSizeException | BadPaddingException e) {
        }
        return Base64.encode(crypted);
    }

zwraca null, czemu? ;p

0

Po pierwsze, czy to rzuca jakimś wyjątkiem? Po drugie jak stosujesz ECB, to jesteś pewien, że wiadomość ma mniej niż 128 bitów?

Jakiej długości masz klucz? AES obsługuje klucze o długości 128,196 i 256 bitów, choć z tymi dwoma ostatnimi może być problem ze względu na przepisy eksportowe, czy coś takiego.

0
Zjarek napisał(a)

Po pierwsze, czy to rzuca jakimś wyjątkiem?

nie

Zjarek napisał(a)

Po drugie jak stosujesz ECB, to jesteś pewien, że wiadomość ma mniej niż 128 bitów?

tak

Zjarek napisał(a)

Jakiej długości masz klucz? AES obsługuje klucze o długości 128,196 i 256 bitów, choć z tymi dwoma ostatnimi może być problem ze względu na przepisy eksportowe, czy coś takiego.

przykładowe wywołanie: AEScrypt("textExample", "keyExample") - zwraca null

0

"keyExample" ma 160 bitów 80 bitów (tak wiem, bajt ma 8 bitów ;)) i nigdzie nie tworzysz z tego klucza o długości 128 bitów. Dodaj jeszcze KeyGenerator.

A co do wyjątków, to chodziło mi o te, co tak bezwzględnie łapiesz, dziwiąc się następnie co nie działa.

0

ok, ale w takim razie w jaki sposób mogę używać własnego klucza?

0

Dobra wziąłem sha1 klucza i wyciągnąłem z niego pierwsze 128 bitów i działa. Jeżeli ktoś zna lepszy sposób to proszę pisać ;p

0

Taka obsługa błedów:

        } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | IllegalBlockSizeException | BadPaddingException e) {
        }

jest bez sensu, a w sytuacji gdy program działa źle (w ogóle nie działa) jest po prostu idiotyczna. Wystarczyłoby takie coś

        } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | IllegalBlockSizeException | BadPaddingException e) {
            System.out.println(e);
        }

i nie musiałbyś pisać na forum.

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