О ВНЕСЕНИИ ИЗМЕНЕНИЙ И ДОПОЛНЕНИЙ В ПРИКАЗ ФОМС ОТ 30.12.2004 N 91 "ОБ ОРГАНИЗАЦИИ ИНФОРМАЦИОННОГО ВЗАИМОДЕЙСТВИЯ ПО ОБЕСПЕЧЕНИЮ НЕОБХОДИМЫМИ ЛЕКАРСТВЕННЫМИ СРЕДСТВАМИ ОТДЕЛЬНЫХ КАТЕГОРИЙ ГРАЖДАН" (В РЕДАКЦИИ ПРИКАЗОВ ФОМС ОТ 24.05.2005 N 51, ОТ 02.08. Приказ. Федеральный фонд обязательного медицинского страхования. 21.03.06 38

Фрагмент документа "О ВНЕСЕНИИ ИЗМЕНЕНИЙ И ДОПОЛНЕНИЙ В ПРИКАЗ ФОМС ОТ 30.12.2004 N 91 "ОБ ОРГАНИЗАЦИИ ИНФОРМАЦИОННОГО ВЗАИМОДЕЙСТВИЯ ПО ОБЕСПЕЧЕНИЮ НЕОБХОДИМЫМИ ЛЕКАРСТВЕННЫМИ СРЕДСТВАМИ ОТДЕЛЬНЫХ КАТЕГОРИЙ ГРАЖДАН" (В РЕДАКЦИИ ПРИКАЗОВ ФОМС ОТ 24.05.2005 N 51, ОТ 02.08".

Предыдущий фрагмент <<< ...  Оглавление  ... >>> Следующий фрагмент

Полный текст документа

Алгоритм   SHA  (Secure  Hash  Algorithm)  стандарта  безопасного
хеширования (Secure Hash Standard, SHS).
     В  зависимости  от выходного хеш-значения выделяют следующие виды
SHA:
     SHA1 - выходное значение 160 бит;
     SHA256 - выходное значение 256 бит;
     SHA512 - выходное значение 512 бит;
     SHA384 - выходное значение 384 бита.
     Стандарт ИСО - ISO/IEC 10118-3:2004
     (http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?
CSNUMBER=39876).
     Настоящий документ описывает стандарт SHA1.
     Описание реализации алгоритма SHA1 на языке C++:
     typedef int HASH[5];
     typedef int T512[16];
     typedef int T80[80];
     typedef int (*LPFNHASH)(int, int, int);// Функции F1, F2, F3
     const int K1 = 0x5a827999;
     const int K2 = 0x6ed9eba1;
     const int К3 = 0x8f1bbcdc;
     const int K4 = 0xca62c1d6;

    unsigned ROL(unsigned a, size_t s) { return a << s | (a >> (sizeof
    (T)*8 - s)); }
    int f1(int x, int y, int z) { return x&y | (~x)&z; }
                                          /\ /    int f2(int x, int y, int z) { return х  у  z; }
    int f3(int x, int y, int z) { return x&y | x&z | y&z; }
    void FillT80(T512 M, T80 W)
    {
        size_t t;
        for(t = 0; t < 16; t++)W[t] = M[t];
                                       /\      /\       /    for(; t < 80; t++)W[t] = ROL(W[t-3]  W[t-8]  W[t-14]  W[t-16], 1);
    }
    void MainStep(T80 W, size_t t, HASH H, LPFNHASH f, int K)
    {
    int tmp = ROL(H[0], 5) + f(H[1], H[2], H[3]) + H[4] + W[t] + K;
        H[4] = H[3];
        H[3] = H[2];
        H[2] = ROL(H[1], 30);
        H[1] = H[0];
        H[0] = tmp;
    }
    void StepSHA(T512 M, HASH Hr)
    {
       T80 W;
       FillT80(M, W);
       size_t t;
       HASH H;
       memcpy(H, Hr, sizeof(HASH));
       for(t = 0; t < 20; t++) MainStep(W, t, H, f1, K1);
       for(; t < 40; t++) MainStep(W, t, H, f2, K2);
       for(; t < 60; t++) MainStep(W, t, H, f3, К3);
       for(; t < 80; t++) MainStep(W, t, H, f2, K4);
           for(size_t i = 0; i < 5; i++)
               Hr[i] += H[i];
    }
    Функции F1, F2, F3:
    F1(X,Y,Z) = (X /\ Y) \/ ((-|X) /\ Z)
F2(X,Y,Z) = X (+) Y (+) Z
F3(X,Y,Z) = (X /\ Y) \/ (X /\ Z) \/ (Y /\ Z)
ROL(X,Y) - циклический сдвиг Х влево на Y разрядов,
где:
/\ - логическое "И";
\/ - логическое "Или";
    -+ - логическое "Не";
(+) - логическое "Исключающее или".

     Перед  запуском  алгоритма хеш-значение должно инициализироваться
следующими константами:
     const  HASH  HASHFIRST  =  {0x67452301,  0xefcdab89,  0x98badcfe,
0x10325476, 0xc3d2e1f0};
     Замечание: тип int хранит байты в обратном порядке. В приведенном
примере  минимальной  единицей памяти является 32-битный блок, поэтому
способ хранения на диске неважен. При побайтовой обработке это следует
учитывать.


                                                      Приложение N 3.5

                                          к Методическим рекомендациям
                         по организации информационного взаимодействия
                          между участниками лекарственного обеспечения
                          отдельных категорий граждан при обязательном
                                              медицинского страхования
                                        (с изменениями и дополнениями)
                                                 от 21 марта 2006 года

               СПЕЦИФИКАЦИЯ ПРОТОКОЛА ЭКСПОРТА-ИМПОРТА
               РЕЕСТРОВ ОСТАТКОВ ЛЕКАРСТВЕННЫХ СРЕДСТВ

              ПЕРЕЧЕНЬ СОКРАЩЕНИЙ И УСЛОВНЫХ ОБОЗНАЧЕНИЙ

     ТФОМС     Территориальный фонд обязательного медицинского
               страхования
     ЦОД       Центр обработки данных

Фрагмент документа "О ВНЕСЕНИИ ИЗМЕНЕНИЙ И ДОПОЛНЕНИЙ В ПРИКАЗ ФОМС ОТ 30.12.2004 N 91 "ОБ ОРГАНИЗАЦИИ ИНФОРМАЦИОННОГО ВЗАИМОДЕЙСТВИЯ ПО ОБЕСПЕЧЕНИЮ НЕОБХОДИМЫМИ ЛЕКАРСТВЕННЫМИ СРЕДСТВАМИ ОТДЕЛЬНЫХ КАТЕГОРИЙ ГРАЖДАН" (В РЕДАКЦИИ ПРИКАЗОВ ФОМС ОТ 24.05.2005 N 51, ОТ 02.08".

Предыдущий фрагмент <<< ...  Оглавление  ... >>> Следующий фрагмент

Полный текст документа