Согласно этой документации функции md5, шаг 4 включает в себя раунды функций, где
Пусть [abcd k s i] обозначает операцию
a = b + ((a + F (b, c, d) + X [k] + T [i]) <<< s). </p>
Выполните следующие 16 операций.
Я не уверен, что символ "+" символизирует в этой операции, будь то сложение или побитовое И. Ранее в статье указывалось
Пусть символ «+» обозначает сложение слов (т.е. по модулю 2 ^ 32
добавление). Пусть X <<< s обозначает 32-битное значение, полученное циклически
сдвиг (вращение) X влево на s битовых позиций. </p>
Я знаю, что [abcd] - это 32-битные слова, а T [i] - это число с плавающей запятой (ive преобразуется в 32-битное слово, а X [k] - один бит. Выполняя эту функцию с побитовым И, получая результат в конец функции - это всегда 32-битная строка FALSE, которая заставляет меня думать, что где-то идет не так.
Ответственный за код Python:
# parse to bitarrays
xb = bitarray(str(x))
tb = bitarray(str(t))
value = b & ((a & F(b,c,d) & xb & tb)) # value always turns false
value = leftshift(value, s)
return value
И скриншот с переменными часами, которые могут быть полезны.
Заранее благодарен ТАК сообщество