Как использовать хэш SHA-1 в качестве ключа AES

Я хочу объединить хеширование и шифрование для большей безопасности. Итак, могу ли я использовать хэш-ключ, сгенерированный из SHA-1, в качестве ключа в AES. Например, у меня есть пароль «50», я вычисляю для него хэш SHA-1 (e1822db470e60d090affd0956d743cb0e7cdf113) и хочу передать эти байты в качестве ключа для AES-128. О чем мне нужно позаботиться при реализации этого? Должен ли я просто обрезать после 128 бит или сделать какое-то сворачивание?

Вот код:

import java.security.MessageDigest; 
public class MessageDigestExample {
public static void main(String[] args)throws Exception{
String input = "This is a message";
MessageDigest hash = MessageDigest.getInstance("SHA1");
System.out.println("input : " + input);
hash.update(Utils.toByteArray(input));
System.out.println("digest : " + Utils.toHex(hash.digest()));
} }

В зависимости от того, откуда вы взяли строку для хеширования, это может иметь слабую защиту. Но если с исходным кодом все в порядке, подойдет и усечение, и сворачивание (с XOR).

Henry 05.11.2018 11:39

Пожалуйста, обратитесь к этому ответу ... в нем есть код для преобразования пароля в ключ с помощью PBKDF2 stackoverflow.com/a/53015144/1235935

Saptarshi Basu 22.11.2018 11:29
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
506
1

Ответы 1

Хотя AES-128 обеспечивает достаточную безопасность, использование ключа из SHA-1, вероятно, не так.

Помимо этого:

Ваш вопрос - это больше дискуссия, чем простой ответ. Я хотел бы указать вам на этот ответ: https://stackoverflow.com/a/19863149/10353914

С предоставленной информацией ваш вопрос как бы устаревает - лучше используйте PBKDF2, где вы можете установить размер выходного хэша на 128 бит.

Другие вопросы по теме