Адаптировал для своего случая код AES-256, режим CTR. Подумал,
было, что нашёл уязвимость в стандартном шифре. Настолько
оригинально написан счётчик вектора инициализации. Задача -
инкрементировать на единицу 128-битное беззнаковоге число в массиве
IV[16]. for (int i = 15; i >= 0; --i){
if (IV[i] == 255){
IV[i] = 0;
continue;
}
IV[i] += 1;
break;
}
Исходник.
На первый взгляд показалось, что всё обернётся за 256 запусков цикла. Но нет, счётчик честный, на 128 бит, пришлось вникнуть. Уфф... Отлегло, а то думал, что уникальность вектора инициализации не обеспечивается, делая возможной атаку " chosen-plaintext attack" и это заговор!