Тег <keygen> отвечает за генерацию пары ключей (открытый и закрытый), которые используются для шифрования и расшифровки данных форм, а также для создания и проверки цифровой подписи. Открытый ключ отправляется на сервер вместе с данными формы, а закрытый сохраняется на локальном устройстве пользователя.

Тег также используется для создания и проверки цифровой подписи.

Элемент <keygen> дает пользователю возможность выбирать из ряда вариантов размера ключа, а также выбирать, где генерировать ключ, например, на смарт-карте или в программном обеспечении и хранится на диске. Но это возможно только в том случае, если браузер пользователя поддерживает криптографические аппаратные средства.

Синтаксис

Тег <keygen> помещается в контейнер <form>. Закрывающий тег не обязателен.

Пример

<!DOCTYPE html>
<html>
  <head>
    <title>Заголовок документа</title>
  </head>
  <body>
    <form action="demo_keygen.asp" method="get">
      <keygen name="rsaPublicKey" keytype="RSA">
      Имя пользователя: <input type="text" name="usr_name">
      <input type="submit">
    </form>
  </body>
</html>

Результат

keygenexample1

Поддержка опций шифрования в браузерах

  • Опции в Chrome и Opera на движке: 2048 (высокая степень), 1024 (средняя степень). В браузере Opera на движке Presto доступны опции 1024, 1280, 1536, 1792, 2048, 2304, 2560, 2816, 3072, 3328, 3584, 3840 и 4096.
  • Опции в Safari 5: 2048 (высокая степень), 1024 (средняя степень), 512 (низкая степень)
  • Опции в Firefox и Android: высокая степень, средняя степень.
  • iOS утверждает, что поддерживает его, но создает неработающий пустой выпадающий список.

Атрибуты

Атрибут Значение Описание
autofocus autofocus Определяет, что при загрузке страницы элемент должен автоматически получить фокус.
Не поддерживается в IE и Firefox.
challenge challenge Определяет строку вызова, которая передается вместе с открытым ключом. Значением атрибута является любая текстовая строка. Если атрибут не указан, то по умолчанию используется пустая строка.
disabled disabled Указывает, что элемент <keygen> должен быть отключен.
form form_id Указывает идентификатор формы или форм, к которой принадлежит элемент <keygen>.
Не поддерживается в IE.
keytype Определяет алгоритм шифрования ключа.
rsa Пользователь может выбрать между высокой и средней степенью защиты (значение по умолчанию).
dsa Пользователь может выбрать размера ключа.
ec Пользователь может выбрать между высокой и средней степенью защиты.
name name Задает имя элемента <keygen>.

Тег <keygen> также поддерживает глобальные атрибуты и атрибуты событий.

Поддержка браузера

chrome firefox safari opera
1+ 1+ 1.2+ 3+

Практикуйте свои знания

Что такое HTML-тег <keygen>?
Считаете ли это полезным?