Алгоритм MD5 имеет следующие шаги:
1) pad input string to a multiple of 64 bytes
2) split input string into blocks of 64 bytes
3) initialise state (a 4-element array)
4) for each block: state <= transform(state,block)
5) encode state as string
Для поддержки ситуаций, когда вы хотите хэшировать что-то поэтапно (например, большие файлы), это может быть реорганизовано следующим образом.
Инициализация:
1) initialise state
2) leftover bytes <= ""
Обновление:
1) append leftover bytes to start of input string
2) split input string into blocks of 64 bytes
3) for each complete block: state <= transform(state,block)
4) leftover bytes <= contents of the incomplete block, if one exists
Дайджест:
1) pad a copy of the leftover bytes
2) split the padded leftover bytes into blocks of 64 bytes
2) tmp_state <= state
2) for each block: tmp_state <= transform(tmp_state,block)
3) encode tmp_state as string
Я фактически реализовал этот подход в VBA - кажется, он работает нормально.Любые предложения, где я должен загрузить код?