OFF: Операция циклического сдвига в делфи #276179


#0 by gar_den
Нужно зашифровать строку по алгоритму RC5. Эта строка разбивается на слова и делается вот так: A = ((A (+) B) <<< B) + K2*r mod 2w, B = ((A (+) B) <<< A) + K2*r+1 mod 2w, где r - номер текущего раунда, начиная с 1; Kn - фрагмент расширенного ключа; <<< n - операция циклического сдвига на x бит влево, где x - значение младших log2 w бит n. А и В - это два слова. Как к ним применить операцию <<<??? их в числа чтоли нужно перевести или как?
#1 by gar_den
ау
#2 by АЛьФ
function RolX(I, C : DWord) : DWord; register; asm  mov  ecx, edx         {get count to cl}  rol  eax, cl          {rotate eax by cl} end; Если я правильно понял проблему.
#3 by gar_den
что такое I и C
#4 by kazam
желательно бы перевести в массив байтов, если А, В - это Стринг.
#5 by gar_den
A,B - это стринг
#6 by gar_den
и как перевести в массив байтов?
#7 by gar_den
чего эта функция делает-то?
#8 by kazam
дай бог памяти...
#9 by kazam
спрочи у
#10 by midav
Это что сдвигать и насколько сдвигать. А и В - "слова", но на самом деле строка разбивается на не на филологические слова а на машинные слова - 8, 16, 32...-битные наборы - точное число бит указано в описании алгоритма шифровки.
#11 by АЛьФ
2 Сдвигает. Там же есть комментарии.
#12 by kazam
читай встроенную справку. Поиск <<
#13 by midav
a - string a[i] - char byte(a[i]) - byte
#14 by gar_den
и как строку разбить на машинные слова, например, 16 битные? как они вообще выглядят эти маш-ын слова набор битов чтоли?
#15 by gar_den
0011010101001101 - это 16битное слово?
#16 by insider
для RC6:
#17 by insider
+16 lgw       = 5; function ROL(a, s: LongWord): LongWord; asm  mov    ecx, s  rol    eax, cl end;
#18 by kazam
плагиат! см
#19 by insider
да, то же, просто без этого непонятен код выше
#20 by kazam
там есть стандартный битовый сдвиг, но я забыл. Може ф-ия, може оператор.ю...
#21 by kazam
в С++ есть кусок справки ОбъектПаскаль SHL    Logical shift left. Both expressions must be absolute immediate values, and the result is an absolute immediate value. SHR    Logical shift right. Both expressions must be absolute immediate values, and the result is an absolute immediate value.
#22 by gar_den
почему lgw = 5?
#23 by gar_den
EncipherBlock(var Block)  Block это что такое
#24 by insider
давай вышлю весь pas, чтоб сюда не постить, поразбираешься
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С