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
}
В Java уже есть все необходимые библиотеки. Просто создайте служебный метод, который реализует хеширование с использованием соли, как описано в OWASP .
Если вы действительно не хотите владеть этим кодом и не возражаете против дополнительных зависимостей, похоже, что Библиотека Shiro (ранее JSecurity ) имеет реализацию того, что описано в OWASP.
Также похоже, что в упомянутой вами библиотеке JASYPT есть аналогичная утилита .
Я понимаю, что в этом ответе не упоминаются Spring или Hibernate, но я не понимаю, как вы надеетесь использовать их в этом сценарии.
MD5 или SHA-256 подойдут, хотя MD5 сейчас можно взломать.
Возможно, я неправильно понял проблему, но это должно быть просто сравнение хешированных паролей.
В спящем режиме, просто сохраните как строку. На стороне проверки используйте следующий метод:
public validate(String user, String pass)
{
if(getUser(user).getPass().equals(getHash(pass)))
return true;
return false;
}
Вы можете использовать Jasypt с Hibernate для шифрования или хеширования ваших свойств на лету, если это то, что вы ищете. Фактический алгоритм вычисления дайджестов (хэшей) довольно прост с использованием JCE, если вы также хотите использовать свой собственный.
Я просто использую что-то похожее на SHA-256 (имя пользователя + ":" + пароль + ":" + соль)
и сохраняю его в базе данных в формате 64- символьный столбец, называемый passwd.
В Википедии говорится о солях: «Данные соли усложняют атаки по словарю, в которых используется предварительное шифрование словарных статей: каждый используемый бит соли удваивает объем памяти и требуемых вычислений. ... Для лучшей безопасности , значение соли хранится в секрете, отдельно от базы данных паролей. Это дает преимущество, когда база данных украдена, а соль - нет ».
Итак, чтобы аутентифицироваться, получите пользователя из базы данных с указанным именем пользователя, затем сгенерируйте то же хэшировать, используя пароль, предоставленный при попытке входа в систему, и сравнить с паролем в базе данных. Также добавьте ограничение скорости для попыток входа в систему (например, 5 за 5-минутный период). Если пользователь забыл свой пароль, НИКОГДА не отправляйте им пароль (так как он не будет сохранен) и не отправляйте им новый сгенерированный пароль, но отправьте им ссылку для изменения этого пароля с ключом / nonce / salt для смены пароля в URL, по которому вы можете проверить.