Фишка для ГОСТа
Идея тут посетила, возможно, что прорабатывали ранее..
Сделать двойной фейстель для алгоритмов по типу ГОСТ89, т.е. обрабатывать данные и параллельно ключи.
Примерно так:
x ^=FF((y +K[i]), x);
y ^=FF((x +K[j]), y);
K[i] ^=FF((y +K[j]), x);
K[j] ^=FF((x +K[i]), y);
y ^=FF((x +K[j]), y);
K[i] ^=FF((y +K[j]), x);
K[j] ^=FF((x +K[i]), y);
т.е. получаем потоковый шифр, варианты использования:
-как обычное шифрование в потоковом режиме, входное значение меняет поток ключей (аналог IV),выходное использовать для XOR с данными.
-как хеш, если использовать конечное состояние ключей. +добавить длину сообщения.
-как вариант условной "губки", ключи накопительные. по сути, не должно быть "слабых" ключей, ключи всегда меняются.
-это уже не ГОСТ, а просто идея.
Реализация идеи здесь: https://yadi.sk/d/V2Jd4evKrPcYQg
комментариев: 10 документов: 3 редакций: 0
Добавка:
по ссылке выше выложил пример реализации более полный.
Добавка, конструкция вида:
K[i] ^= x^= FF(y+K[i])
K[j] ^= y^= FF(x+K[j])
тоже не плохо работает и быстрей.
комментариев: 10 документов: 3 редакций: 0
Если довести данную схему до варианта аналогичному RC4, то получается так:
но наверное проблемы будут теже, то и у RC4, хотя может быть и по другому.
Зато получился последовательный алгоритм.
update: пример генерации
https://yadi.sk/d/7ZX4vKiYjy9hcA