Если ты будешь делать так как сейчас, то нормальной скорости не получишь. Если ключ для блочного шифра правильно генерировать, но нет никакого смысла "несимметрично" обрабатывать весь файл, это тоже самое что реализовать шифрование на JavaScript.
Сделай так (например):
1) Собери в линейный буфер все случайную информацию (время, pentium-rdtsc, шум звуковой карты, GetTickCount, временные rdtsc-штампы 100 последних нажатий на клавиши и мышь, и т.д.);
2) Пропусти полученную "чушь" через ripemd-128, получи digest1 (128 бит);
3) Пропусти ту же "чушь" задом-наперед, получи digest2 (128 бит);
4) Обработай файл блочным шифром (AES/Rijndael, RC6) в CBC режиме используя digest1 для инициализации, и digest2 как пароль для key_setup();
5) Собери digest1, digest2 и контрольную сумм изначального файла до кучи, дополни случайными числами до «асимметричного» блока, ну и зашифруй его ;-)
Использую RSA, ElGamal "неправильно" - не подписываю, а полность шифрую файл. На расшифровку файла в 40кб требуется ~40сек. Это нормально, или у меня медленная реализация? Есть что-нибудь среди ассиметричного шифрования, что работало бы на порядок быстрее (1-2 сек.) ? Мне нужно обязательно шифровать ассиметричным методом, и только если я в принципе не добьюсь нужной скорости расшифровки (2-3 сек. на файлах размером ~100кб), то буду делать стандартно - шифровать симметричным, ключ симметричного шифра подписывать ассиметричным.
Best regards,
Alexey Kuzminich
Re: RSA, ElGamal - такие медленные?20.01.02 12:18 Автор: leo <Леонид Юрьев> Статус: Elderman
Если ты будешь делать так как сейчас, то нормальной скорости не получишь. Если ключ для блочного шифра правильно генерировать, но нет никакого смысла "несимметрично" обрабатывать весь файл, это тоже самое что реализовать шифрование на JavaScript.
Сделай так (например):
1) Собери в линейный буфер все случайную информацию (время, pentium-rdtsc, шум звуковой карты, GetTickCount, временные rdtsc-штампы 100 последних нажатий на клавиши и мышь, и т.д.);
2) Пропусти полученную "чушь" через ripemd-128, получи digest1 (128 бит);
3) Пропусти ту же "чушь" задом-наперед, получи digest2 (128 бит);
4) Обработай файл блочным шифром (AES/Rijndael, RC6) в CBC режиме используя digest1 для инициализации, и digest2 как пароль для key_setup();
5) Собери digest1, digest2 и контрольную сумм изначального файла до кучи, дополни случайными числами до «асимметричного» блока, ну и зашифруй его ;-)