Почему эта реализация AES разворачивает и снова переносит ключ? - PullRequest
0 голосов
/ 19 ноября 2009

Я пытаюсь понять этот комментарий из кода реализации AES:

/**
 * This program generates a AES key, retrieves its raw bytes, and
 * then reinstantiates a AES key from the key bytes.
 * The reinstantiated key is used to initialize a AES cipher for
 * encryption and decryption.
 */

Я не понимаю следующие моменты:

  1. Что означает необработанных байтов ключа AES ?
  2. Что означает восстановление ключа AES из байтов ключа ?

Ответы [ 3 ]

1 голос
/ 19 ноября 2009

Необработанные байты, вероятно, ссылаются на представление хранилища ключевого объекта.
Обычно вы создаете ключевой объект, а затем получаете форму для его хранения (посмотрите на java.security.Key # getEncoded () . Это представление хранения / обмена представляет собой байтовый массив без информации о кодировании - следовательно "необработанные байты".

Эти необработанные байты затем можно использовать для создания экземпляра ключевого объекта.
Мне непонятно, почему программа восстанавливает ключевой объект вместо того, чтобы использовать созданный ранее.
На это, вероятно, можно ответить, только увидев код программы.

1 голос
/ 19 ноября 2009

Я думаю, что вы читаете эту веб-страницу,

http://java.sun.com/developer/technicalArticles/Security/AES/AES_v1.html

У нас есть код, который генерирует ключи AES согласно этому примеру, но я думаю, что автор немного запутался. Он генерирует ключи, как это,

    kgen = KeyGenerator.getInstance("AES");
        kgen.init(128);
        // Generate the secret key specs.
        SecretKey skey = kgen.generateKey();
        byte[] raw = skey.getEncoded();
        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

skey - это ключ AES, который вы можете использовать. Второй шаг ничего не делает. Если вы посмотрите внутрь skey и skeySpec, они идентичны.

Так что вы можете игнорировать объяснение. Это не делает это более ясным.

0 голосов
/ 19 ноября 2009

AES: стандарт расширенного кодирования Ключ представляет собой строку. Так что это, кажется, генерирует строку. Затем он, вероятно, преобразует его в массив байтов (возможно, для хранения). Затем он воссоздает строку из массива байтов.

...