Пароль BCrypt (blowfish) для зашифрованного текста AES 256 (Rijndael) - PullRequest
2 голосов
/ 27 мая 2011

Я решил попробовать BCrypt для хеширования ключа для AES256 (Rijndael / CBC).

Проблема в том, что длина ключа AES256 должна быть 32 байта.Ключ BCrypt имеет длину 60 байт и, естественно, всегда отличается.Может быть, виновата довольно тяжелая и длинная неделя, но я не могу понять, как я могу использовать хешированный ключ с BCrypt в сочетании с AES256.Я просто устал и слеп, или нет никакого способа сделать это?

Спасибо

Ответы [ 3 ]

2 голосов
/ 27 мая 2011

Вы пытаетесь что-то хэшировать (например, пароль) и используете это как ключ AES?

Я не знаком с BCrypt, но SHA-256 создаст хеш, который имеет тот же размер, что и ключ AES 256. Или, если вы хотите использовать BCrypt, вы можете просто прочитать первые 32 байта этого хэша и отбросить остальные.

0 голосов
/ 03 августа 2011

То, что вам нужно, это безопасная функция получения ключа .Усечение байтов, как предлагается в комментариях, иногда работает, но это всегда зависит от контекста, поэтому не делайте этого, если вы не совсем уверены в этом.

Усечение не будет работать в любом случае в ситуациях, когдавам нужно «растянуть» свой вклад, это также, где большинство ошибок сделано.Если вы не можете создать свой ключ, используя безопасный генератор случайных чисел, то обычно вам нужно преобразовать некоторые неслучайные данные (например, пароль) в нечто ценное в качестве материала ключа.Очевидно, что энтропия неслучайных данных обычно недостаточно хороша для этой цели.

Посмотрите на PKCS # 5 и используйте его PBKDF2, если вы хотите преобразовать пароли в ключи произвольной длины.для AES или любого другого алгоритма симметричного шифрования.

0 голосов
/ 03 августа 2011

Я не думаю, что вам следует когда-либо отбрасывать байты из расчетов криптографии, потому что эти байты должны поддерживать другие байты, которые вы сохранили - отбрасывание некоторых ослабляет вывод.

...