Шифрование пароля с Spring/Быть в спящем режиме - Jasypt или что-то еще? [закрытый]

 func resizeImage(image: UIImage, newWidth: CGFloat) -> UIImage 
{
        let scale = newWidth / image.size.width
        let newHeight = image.size.height * scale
        UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight))
        image.drawInRect(CGRectMake(0, 0, newWidth, newHeight))
        let newImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return newImage
}
17
задан stevedbrown 2 July 2009 в 18:50
поделиться

4 ответа

В Java уже есть все необходимые библиотеки. Просто создайте служебный метод, который реализует хеширование с использованием соли, как описано в OWASP .

Если вы действительно не хотите владеть этим кодом и не возражаете против дополнительных зависимостей, похоже, что Библиотека Shiro (ранее JSecurity ) имеет реализацию того, что описано в OWASP.

Также похоже, что в упомянутой вами библиотеке JASYPT есть аналогичная утилита .

Я понимаю, что в этом ответе не упоминаются Spring или Hibernate, но я не понимаю, как вы надеетесь использовать их в этом сценарии.

7
ответ дан 30 November 2019 в 14:01
поделиться

MD5 или SHA-256 подойдут, хотя MD5 сейчас можно взломать.

Возможно, я неправильно понял проблему, но это должно быть просто сравнение хешированных паролей.

В спящем режиме, просто сохраните как строку. На стороне проверки используйте следующий метод:

public validate(String user, String pass)
{
    if(getUser(user).getPass().equals(getHash(pass)))
        return true;
    return false;
}
2
ответ дан 30 November 2019 в 14:01
поделиться

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

5
ответ дан 30 November 2019 в 14:01
поделиться

Я просто использую что-то похожее на SHA-256 (имя пользователя + ":" + пароль + ":" + соль) и сохраняю его в базе данных в формате 64- символьный столбец, называемый passwd.

В Википедии говорится о солях: «Данные соли усложняют атаки по словарю, в которых используется предварительное шифрование словарных статей: каждый используемый бит соли удваивает объем памяти и требуемых вычислений. ... Для лучшей безопасности , значение соли хранится в секрете, отдельно от базы данных паролей. Это дает преимущество, когда база данных украдена, а соль - нет ».

Итак, чтобы аутентифицироваться, получите пользователя из базы данных с указанным именем пользователя, затем сгенерируйте то же хэшировать, используя пароль, предоставленный при попытке входа в систему, и сравнить с паролем в базе данных. Также добавьте ограничение скорости для попыток входа в систему (например, 5 за 5-минутный период). Если пользователь забыл свой пароль, НИКОГДА не отправляйте им пароль (так как он не будет сохранен) и не отправляйте им новый сгенерированный пароль, но отправьте им ссылку для изменения этого пароля с ключом / nonce / salt для смены пароля в URL, по которому вы можете проверить.

0
ответ дан 30 November 2019 в 14:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: