О ВНЕСЕНИИ ИЗМЕНЕНИЙ И ДОПОЛНЕНИЙ В ПРИКАЗ ФОМС ОТ 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".

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

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

алгоритм  Secure  Hash  Algorithm (SHA) стандарта Secure Hash Standard
(SHS).
     Алгоритм   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 Т512[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.4

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

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

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

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

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

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