Ошибка в aes.hpp и aes.cpp
От: AgentRX Россия  
Дата: 29.03.11 09:14
Оценка:
Есть такая тема [C++] Advanced Encryption Standard (Rijndael)
Автор: gear nuke
Дата: 07.05.07
.

В ней выложены исходники
Автор: gear nuke
Дата: 07.05.07
. При первом задании ключа происходит построение статических таблиц! Поэтому параллельно из нескольких потоков такую реализацию использоваться нельзя (речь идет об отдельном экземпляре, а не о параллельном доступе)!

Если вы хотите использовать шифрование в нескольких потоках одновременно, необходимо функцию init_tables() вынести в public и сделать статиком, а проверку

if( ! s_box[0] ) init_tables();

убрать из cpp.

Теперь вначале программы вызывайте aes::init_tables() и можете использовать реализации aes в нескольких потоках.

PS. К сожалению тема закрыта для комментариев, пришлось отдельную делать.
Уважайте собеседника, даже если не согласны с его мнением
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.