Добрый день,

Насколько я могу судить, в реализации режима OFB допущена опечатка, которая приводит к ошибке в случае len(iv) / bs >= 3. После шифрования части инициализирующего вектора, XOR производится со вторым блоком iv (r[1]), в то время как должен производиться с последним, только что зашифрованным блоком (r[-1]).
На тестовых векторах это не видно, так как в них len(iv) / bs = 2, и r[1] == r[-1]

--
С уважением,
Александр Лодин.