Задать вопрос
@synapse_people

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

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽