Помогите разобраться с алгоритмом AES-128

 
 
 
Сообщения:1
Приветствую всех!

Шифрую данные ключом из 16 бит:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

        byte key[] = new byte[]{
                0b01000000,0b1100010,0b1100011,0b1100100,0b1100101,0b1100110,0b110000,0b110001,0b110010,0b110011,0b110100,0b110101,0b110110,0b110111,0b111000,0b111001
        };
        for(int i=0; i<key.length; i++){
            System.out.print((char)key[i]);
        }

        System.out.println();
        SecretKey secret = new SecretKeySpec(key, "AES");

        cipher.init(Cipher.ENCRYPT_MODE, secret);
        AlgorithmParameters params = cipher.getParameters();
        byte[] iv = params.getParameterSpec(IvParameterSpec.class).getIV();
        byte[] ciphertext = cipher.doFinal("123456789012345678901234567890".getBytes("UTF-8"));

        String arrByte = new BigInteger(1, ciphertext).toString(16);
        System.out.println(arrByte);
        
        for(int i=0; i<ciphertext.length; i++){
            System.out.print((char) ciphertext[i]);
        }
        System.out.println();
        for(int i=0; i<ciphertext.length; i++){
            System.out.print(Long.toBinaryString(ciphertext[i])+", ");
        }


При каждом запуске программы получаю разные закодированные строки, хотя ключ не меняется. Пример трёх выводов:
@bcdef0123456789
16c14e4cb70628684e28dbdc2173ea14ec8cd0c9c1f0ae270d00bc78967efcef
 ᄐxヨ~￯
10110, 1111111111111111111111111111111111111111111111111111111111000001, 1001110, 1001100, 1111111111111111111111111111111111111111111111111111111110110111, 110, 101000, 1101000, 1001110, 101000, 1111111111111111111111111111111111111111111111111111111111011011, 1111111111111111111111111111111111111111111111111111111111011100, 100001, 1110011, 1111111111111111111111111111111111111111111111111111111111101010, 10100, 1111111111111111111111111111111111111111111111111111111111101100, 1111111111111111111111111111111111111111111111111111111110001100, 1111111111111111111111111111111111111111111111111111111111010000, 1111111111111111111111111111111111111111111111111111111111001001, 1111111111111111111111111111111111111111111111111111111111000001, 1111111111111111111111111111111111111111111111111111111111110000, 1111111111111111111111111111111111111111111111111111111110101110, 100111, 1101, 0, 1111111111111111111111111111111111111111111111111111111110111100, 1111000, 1111111111111111111111111111111111111111111111111111111110010110, 1111110, 1111111111111111111111111111111111111111111111111111111111111100, 1111111111111111111111111111111111111111111111111111111111101111,

@bcdef0123456789
fd2754d8c114146a7d867bf77ad8e3b122c522b614222e189ed591bd380ea41a
�'T￘￁j}ニ{￷z￘ ̄ᄆ"ᅤ"ᄊ".゙ᅰムᄑ8ᄂ
1111111111111111111111111111111111111111111111111111111111111101, 100111, 1010100, 1111111111111111111111111111111111111111111111111111111111011000, 1111111111111111111111111111111111111111111111111111111111000001, 10100, 10100, 1101010, 1111101, 1111111111111111111111111111111111111111111111111111111110000110, 1111011, 1111111111111111111111111111111111111111111111111111111111110111, 1111010, 1111111111111111111111111111111111111111111111111111111111011000, 1111111111111111111111111111111111111111111111111111111111100011, 1111111111111111111111111111111111111111111111111111111110110001, 100010, 1111111111111111111111111111111111111111111111111111111111000101, 100010, 1111111111111111111111111111111111111111111111111111111110110110, 10100, 100010, 101110, 11000, 1111111111111111111111111111111111111111111111111111111110011110, 1111111111111111111111111111111111111111111111111111111111010101, 1111111111111111111111111111111111111111111111111111111110010001, 1111111111111111111111111111111111111111111111111111111110111101, 111000, 1110, 1111111111111111111111111111111111111111111111111111111110100100, 11010,

@bcdef0123456789
bd72936e8be4dda1617abc3a139ebb781ae8d655e942432e3ad6a83b42e995d7
ᄑrモnヒ¦￝ᄀazᄐ:゙ᄏx│ᅱU←BC.:ᅱᄄ;B←ユᅲ
1111111111111111111111111111111111111111111111111111111110111101, 1110010, 1111111111111111111111111111111111111111111111111111111110010011, 1101110, 1111111111111111111111111111111111111111111111111111111110001011, 1111111111111111111111111111111111111111111111111111111111100100, 1111111111111111111111111111111111111111111111111111111111011101, 1111111111111111111111111111111111111111111111111111111110100001, 1100001, 1111010, 1111111111111111111111111111111111111111111111111111111110111100, 111010, 10011, 1111111111111111111111111111111111111111111111111111111110011110, 1111111111111111111111111111111111111111111111111111111110111011, 1111000, 11010, 1111111111111111111111111111111111111111111111111111111111101000, 1111111111111111111111111111111111111111111111111111111111010110, 1010101, 1111111111111111111111111111111111111111111111111111111111101001, 1000010, 1000011, 101110, 111010, 1111111111111111111111111111111111111111111111111111111111010110, 1111111111111111111111111111111111111111111111111111111110101000, 111011, 1000010, 1111111111111111111111111111111111111111111111111111111111101001, 1111111111111111111111111111111111111111111111111111111110010101, 1111111111111111111111111111111111111111111111111111111111010111,


Почему так происходит? Почему один и тот-же ключ шифрует по разному? И что это за байт такой, длиной в 64 бит?

И еще один вопрос, как записать в ключ, байт старше 126? То есть, я не могу записать в ключ, к примеру, такой байт: 0b10000000
Изменен:26 июл 2017 13:47
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет