@synapse_people

Можно ли реализовать так алгоритм AES?

Всем привет.
Меня интересует возможность реализации х86 инструкции процессора intel AESENC, которая выполняет 1 раунд шифрования AES при помощи строк по 16 байт, то есть 128 бит.
Ведь AESENC принимает два 128 битных инта как параметры - состояние и ключ раунда. Затем возвращает состояние, также в виде 128 бит инта...
Возможно ли реализовать в PHP функцию, которая бы делала 1 раунд шифрования используя только строки, без массивов?
Бенчмарки показывают, что доступ к значениям индексов, изменение значений в массивах, ксоры, сдвиги - все это очень долго.
К примеру, чтобы сксорить состояние с ключем, можно написать $state ^= $key; для строк - этого достаточно, каждый байт состояния будет заксорен с ключем... но вот как быть с теми функциями, где происходят перестановки?
подскажите....
  • Вопрос задан
  • 189 просмотров
Пригласить эксперта
Ответы на вопрос 1
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Ну чисто теоретически можно резать строку на блоки по 4 символа, преобразовывать их в числа, с числами проводить необходимые операции, затем снова преобразовывать в строки и склеивать их вместе. Функции unpack() и pack() в этом могут помочь.
Без массивов получится. А все операции с числами, включая перестановки бит, делаются с помощью битовых операций &, |, !, ^. Ну и умножение/деление на 2 для управления сдвигаемым битом.
Но, положа руку на сердце, PHP-не лучший вариант для реализации криптоалгоритмов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы