Сейчас на форуме: rmn, exp50848 (+7 невидимых)

 eXeL@B —› Основной форум —› Опознать криптоалгоритм
Посл.ответ Сообщение

Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 27 июня 2013 18:14 · Поправил: r_e
· Личное сообщение · #1

Помогите опознать алго.
Code:
  1. void __fastcall CryptHzSetKey(PBYTE Key, signed int Size, PBYTE Context)
  2. {
  3.   for (__i = 0; __i < 0x100; ++__i)
  4.          Context[__i] = __i;
  5.  
  6.   Context[0x100] =
  7.   Context[0x101] = 0;
  8.  
  9.   for (__i = 0; __i < 0x100; ++__i)
  10.   {
  11.     lCurOffs = Key[__i % Size] + Context[__i] + lCurOffs;
  12.     __SWAP(Context[__i], Context[lCurOffs]);
  13.   }
  14. }
  15.  
  16. void __fastcall CryptHzCrypt0(PBYTE Data, int Size, PBYTE Context)
  17. {
  18.   lPos1 = Context[0x100];
  19.   lPos0 = Context[0x101];
  20.   if ( Size > 0 )
  21.   {
  22.          for (__i = 0; __i < Size; ++__i)
  23.     {
  24.        lPos0 = Context[++lPos1 + lPos0];
  25.  
  26.         __SWAP(Context[lPos0], Context[lPos1]);
  27.          Data[__i] ^= Context[Context[lPos0] + Context[lPos1]];
  28.     }
  29.     --lPos1;
  30.   }
  31.   Context[0x100] = lPos1;
  32.   Context[0x101] = lPos0;
  33. }


-----
старый пень





Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 27 июня 2013 18:27
· Личное сообщение · #2

не rc4 ?

-----
ds


| Сообщение посчитали полезным: r_e


Ранг: 136.0 (ветеран), 360thx
Активность: 0.270.14
Статус: Участник
Qt Developer

Создано: 27 июня 2013 18:27 · Поправил: hors
· Личное сообщение · #3

RC4?

Code:
  1.  
  2. /*
  3.  * 'rc4_init()' - Initialize an RC4 context with the specified key.
  4.  */
  5.  
  6. void
  7. rc4_init(rc4_context_t       *text, /* IO - Context */
  8.          const unsigned char *key,  /* I - Key */
  9.          unsigned            keylen)         /* I - Length of key */
  10. {
  11.   int       i, j; /* Looping vars */
  12.   unsigned char   tmp; /* Temporary variable */
  13.  
  14.  
  15.  /*
  16.   * Fill in linearly s0=0, s1=1, ...
  17.   */
  18.  
  19.   for (= 0; i < 256; i ++)
  20.     text->sbox[i] = i;
  21.  
  22.   for (= 0, j = 0; i < 256; i ++)
  23.   {
  24.    /*
  25.     * j = (+ Si + Ki) mod 256
  26.     */
  27.  
  28.     j = (+ text->sbox[i] + key[% keylen]) & 255;
  29.  
  30.    /*
  31.     * Swap Si and Sj...
  32.     */
  33.  
  34.     tmp           = text->sbox[i];
  35.     text->sbox[i] = text->sbox[j];
  36.     text->sbox[j] = tmp;
  37.   }
  38.  
  39.  /*
  40.   * Initialized counters to 0 and return...
  41.   */
  42.  
  43.   text->= 0;
  44.   text->= 0;
  45. }
  46.  
  47.  
  48. /*
  49.  * 'rc4_encrypt()' - Encrypt the given buffer.
  50.  */
  51.  
  52. void
  53. rc4_encrypt(rc4_context_t       *text,             /* I - Context */
  54.              const unsigned char *input,       /* I - Input buffer */
  55.              unsigned char       *output,   /* O - Output buffer */
  56.              unsigned            len)             /* I - Size of buffers */
  57. {
  58.   unsigned char     tmp; /* Swap variable */
  59.   int         i, j; /* Looping vars */
  60.   int         t; /* Current S box */
  61.  
  62.  
  63.  /*
  64.   * Loop through the entire buffer...
  65.   */
  66.  
  67.   i = text->i;
  68.   j = text->j;
  69.  
  70.   while (len > 0)
  71.   {
  72.    /*
  73.     * Get the next S box indices...
  74.     */
  75.  
  76.     i = (+ 1) & 255;
  77.     j = (+ text->sbox[i]) & 255;
  78.  
  79.    /*
  80.     * Swap Si and Sj...
  81.     */
  82.  
  83.     tmp           = text->sbox[i];
  84.     text->sbox[i] = text->sbox[j];
  85.     text->sbox[j] = tmp;
  86.  
  87.    /*
  88.     * Get the S box index for this byte...
  89.     */
  90.  
  91.     t = (text->sbox[i] + text->sbox[j]) & 255;
  92.  
  93.    /*
  94.     * Encrypt using the S box...
  95.     */
  96.  
  97.     *output++ = *input++ ^ text->sbox[t];
  98.     len --;
  99.   }
  100.  
  101.  /*
  102.   * Copy current S box indices back to context...
  103.   */
  104.  
  105.   text->= i;
  106.   text->= j;
  107. }
  108.  
  109.  
  110.  
  111.  


-----
http://ntinfo.biz


| Сообщение посчитали полезным: r_e

Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 27 июня 2013 18:43
· Личное сообщение · #4

=) Я как собака: понимать - понимаю, а сказать не могу. Чувствую, что где-то видел. А вспомнить не могу.

-----
старый пень



 eXeL@B —› Основной форум —› Опознать криптоалгоритм
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати