The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

setkey (3)
  • setkey (3) ( Solaris man: Библиотечные вызовы )
  • >> setkey (3) ( Русские man: Библиотечные вызовы )
  • setkey (3) ( Linux man: Библиотечные вызовы )
  • setkey (3) ( POSIX man: Библиотечные вызовы )
  • setkey (8) ( FreeBSD man: Команды системного администрирования )
  • setkey (8) ( Linux man: Команды системного администрирования )
  •  

    НАЗВАНИЕ

    encrypt, setkey, encrypt_r, setkey_r - 64-битное кодирование сообщений  

    СИНТАКСИС

    #define _XOPEN_SOURCE
    #include <unistd.h>

    void encrypt(char block[64], int edflag);

    #define _XOPEN_SOURCE
    #include <stdlib.h>

    void setkey(const char *key);

    #define _GNU_SOURCE
    #include <crypt.h>

    void setkey_r (const char *key, struct crypt_data *data);
    void encrypt_r (char *block, int edflag, struct crypt_data *data);

    Все это требует привязки к -lcrypt.  

    ОПИСАНИЕ

    Эти функции кодируют и декодируют 64-битные сообщения. Функция setkey() устанавливает ключ, используемый encrypt(). Параметр key является массивом из 64 байтов, каждый из которых имеет значение 1 или 0. Все байты key[n], где n=8*i-1 - игнорируются, так что действительная длина ключа равна 56 битам.

    Функция encrypt() модифицирует переданный буфер, и если edflag равно 0, то кодирует его, а если равно 1 - то декодирует.

    Как и параметр key, block также является представлением битового вектора действительного кодируемого значения. Результат возвращается в этом же векторе.

    Эти две функции не являются повторно используемыми, то есть данные ключа key хранятся в статическом хранилище. Функции setkey_r() и encrypt_r() являются повторно используемыми. они используют следующую структуру для хранения данных key:

    struct crypt_data { 
          char keysched[16 * 8]; 
          char sb0[32768]; 
          char sb1[32768]; 
          char sb2[32768]; 
          char sb3[32768]; 
          char crypt_3_buf[14]; 
          char current_salt[2]; 
          long int current_saltbits; 
          int  direction, initialized; 
    }; 
    
     

    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ

    Эти функции ничего не возвращают.  

    НАЙДЕННЫЕ ОШИБКИ

    Установите переменную errno в ноль перед вызовом этих функций. При нормальном завершении работы ее значение не изменится.
    ENOSYS
    Функция не предусмотрена. (Например, из-за старых запретов США на экспорт.)
     

    ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ

    Необходимо привязаться к libcrypt для сборки этого примера с glibc2.2. Для правильной работы массивы key[] и txt[] должны быть заполнены полезными значениями. Заметим, что заголовок <crypt.h> безоговорочно дает прототипы для setkey() и encrypt().

    #include <crypt.h> 
     
    main() { 
      char key[64];      /* битовый шаблон для ключа key */ 
      char txt[64];      /* битовый шаблон для сообщений */ 
      setkey(key); 
      encrypt(txt, 0);   /* кодирование */ 
      encrypt(txt, 1);   /* декодирование */ 
    } 
    
     

    ЗАМЕЧАНИЯ

    В glibc2.2 эти функции используют алгоритм DES.  

    СООТВЕТСТВИЕ СТАНДАРТАМ

    Функции encrypt() и setkey() соответствуют SVID, SUSv2, and POSIX 1003.1-2001. Функции encrypt_r() и setkey_r() являются расширениями GNU.  

    СМ. ТАКЖЕ

    cbc_crypt(3), crypt(3), ecb_crypt(3), fcrypt(3)


     

    Index

    НАЗВАНИЕ
    СИНТАКСИС
    ОПИСАНИЕ
    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
    НАЙДЕННЫЕ ОШИБКИ
    ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
    ЗАМЕЧАНИЯ
    СООТВЕТСТВИЕ СТАНДАРТАМ
    СМ. ТАКЖЕ


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру