Шифрование простого пароля

Попробуйте инициализировать список replyModel во внутреннем цикле for, кажется, что все элементы добавляются в один и тот же список и добавляются в один и тот же список со всеми ключами. Таким образом, получается весь список со всеми ключами.

                  for(int i=0;i<model.size();i++){
                   JSONArray replyArrays = replyObject.getJSONArray(String.valueOf(model.get(i).comment_id));
                  //Initialise inside the loop 
                  ArrayList<ReplyCommentModel> replyModel = new ArrayList();
                   for(int j=0;j<replyArrays.length();j++){
                       JSONObject jsonObject1 = replyArrays.getJSONObject(j);
                       Integer id = jsonObject1.getInt("id");
                       String name = jsonObject1.getString("name");
                       String comment_image = jsonObject1.getString("photo");
                       Integer user_id = jsonObject1.getInt("user_id");
                       String comment = jsonObject1.getString("comment");
                       String added_on = jsonObject1.getString("addedon");
                       String imageURl = Constant.IMAGE_URL+Constant.COMMENT_USER_IMAGE_URL+comment_image;
                       replyModel.add(new ReplyCommentModel(comment,name,imageURl,added_on,user_id,id));
                   }
                   if(replyModel != null){
                       replyModelMap.put(String.valueOf(model.get(i).comment_id),replyModel);

                   }
               }
17
задан Jason Baker 27 August 2008 в 19:17
поделиться

13 ответов

Как знак говорит, SHA1 или MD5 стандартные, наряду с SHA2 .

<час>

Обновление: Поскольку процессоры стали быстрее за эти годы, хеши стали более грубыми-forceable. Это теперь рекомендовало использовать bcrypt .

<час>

то, Что Вы хотите, в более общем плане называют криптографической хеш-функцией. Криптографические хеши разработаны, чтобы быть односторонними (учитывая получающийся хеш, Вы не должны мочь получить исходный вход). Кроме того, вероятность двух произвольных строк, имеющих тот же хеш (известный как хэш-коллизия), должна быть низкой (идеально 1/число из значений хэш-функции).

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

Редактирование - несколько человек также уже указали на важность использования соли. Соль является постоянной величиной, в которой Вы смешиваетесь с входом перед использованием хеш-функции. Наличие уникальной соли препятствует тому, чтобы офлайновые взломщики использовали предварительно вычисленные таблицы общих паролей (таблицы радуги) к "в лоб" Ваши пароли еще быстрее.

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

MD5 или SHA1 + соль.

10
ответ дан 30 November 2019 в 10:25
поделиться

Если Вы используете MD5, или SHA1 используют соль для предотвращения взломов таблицы радуги.

В C# это легко:

MD5CryptoServiceProvider hasher = new MD5CryptoServiceProvider();
string addSalt = string.Concat( "ummm salty ", password );
byte[] hash = hasher.ComputeHash( Encoding.Unicode.GetBytes( addSalt ) );
10
ответ дан 30 November 2019 в 10:25
поделиться

Используйте SHA одним путем алгоритм хеширования наряду с уникальной солью. Это - основной алгоритм, который я использую для хранения моих паролей в базе данных.

3
ответ дан 30 November 2019 в 10:25
поделиться

Необходимо использовать однонаправленный хеш-алгоритм как SHA-1, предложенный выше с солью. Я предложил бы этот сайт для получения дополнительной информации. Это включает некоторый пример кода / реализация. http://www.obviex.com/samples/hash.aspx

0
ответ дан 30 November 2019 в 10:25
поделиться

Если бы Вы хотите соответствовать требованиям завтрашнего дня свое решение, я рекомендовал бы SHA256 или SHA512. Криптографический geekworld дрожит о MD5 и, до немного меньшей степени, SHA1.

Или, если Вы можете, ожидают SHA-3

0
ответ дан 30 November 2019 в 10:25
поделиться

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

0
ответ дан 30 November 2019 в 10:25
поделиться

Для необратимого шифрования я совершенно определенно пошел бы с SHA256 или SHA1. MD5 имеет довольно много коллизий теперь, и много усилий было приложено к повреждению его, таким образом, не хороший для использования.

0
ответ дан 30 November 2019 в 10:25
поделиться

При использовании SQL Server существует функция HashBytes:

http://msdn.microsoft.com/en-us/library/ms174415.aspx

0
ответ дан 30 November 2019 в 10:25
поделиться

Я второй голосование за MD5 или SHA с солью. Любой из главных языков веб-разработки имеет функции, встроенные для вычислений хеша (в PHP, например, mcrypt пакет содержит необходимые функции).

0
ответ дан 30 November 2019 в 10:25
поделиться

Это было проблемой мои несколько недель назад. Мы развертывали большой проект MIS на 975 различных географических положениях, где наше собственное пользовательское учетное хранилище будет использоваться в качестве аутентификатора для другого набора уже реализованных и используемых приложений. Мы уже обеспечили и REST и основанную на SOAP услугу аутентификации, но клиент настоял, чтобы смочь достигнуть пользовательского учетного хранилища из других приложений только с соединение с БД к представлению только для чтения связанной таблицы или представлению. Вздох... (это очень двойное плохое проектное решение является предметом другого вопроса).

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

Мы назвали это Довольно Безопасными Хешированными Паролями или FSHP короче говоря. Реализованный это в Python, Ruby, PHP5 и выпущенный это к Общественному достоянию. Доступный, чтобы быть использованным, разветвленный, горел или плевал на GitHub на http://github.com/bdd/fshp

, FSHP является соленой, многократно хешированной реализацией хеширования пароля.

Принцип разработки является похожим с спецификация PBKDF1 в RFC 2898 (иначе: PKCS № 5: основанная на пароле Версия 2.0 Спецификации Криптографии.) FSHP позволяет выбирать соленую длину, количество повторений и базовой криптографической хеш-функции среди SHA-1 и SHA-2 (256, 384, 512). Сам определяющий meta префикс в начале каждого вывода делает это портативным при разрешении потребителю для выбора его собственной базовой линии безопасности хранения пароля.

БЕЗОПАСНОСТЬ :

Значение по умолчанию FSHP1 использует 8-байтовые соли с 4 096 повторениями хеширования SHA-256. - 8 байтов солят нападения таблицы радуги рендеринга, непрактичные путем умножения требуемого пространства с 2^64. - 4 096 повторений заставляет атаки перебором быть довольно дорогими. - Нет никаких известных нападений на SHA-256 для нахождения коллизий с вычислительным усилием меньше, чем 2^128 операции во время этого выпуска.

РЕАЛИЗАЦИИ:

  • Python: Протестированный с 2.3.5 (w/hashlib), 2.5.1, 2.6.1
  • Ruby: Протестированный с 1.8.6
  • PHP5: Протестированный с 5.2.6

Все - больше, чем приветствие, чтобы создать недостающие реализации языка или полировать текущие.

ОСНОВНАЯ ОПЕРАЦИЯ (с Python) :

>>> fsh = fshp.crypt('OrpheanBeholderScryDoubt')
>>> print fsh
{FSHP1|8|4096}GVSUFDAjdh0vBosn1GUhzGLHP7BmkbCZVH/3TQqGIjADXpc+6NCg3g==
>>> fshp.validate('OrpheanBeholderScryDoubt', fsh)
True

НАСТРОЙКА СКЛЕПА:

Позволяют нам ослабить нашу схему хеширования пароля. - Уменьшают соленую длину со значения по умолчанию от 8 до 2. - Уменьшают повторение вокруг со значения по умолчанию от 4096 до 10. - Выбирают FSHP0 с SHA-1 как базовый хеш-алгоритм.

>>> fsh = fshp.crypt('ExecuteOrder66', saltlen=2, rounds=10, variant=0)
>>> print fsh
{FSHP0|2|10}Nge7yRT/vueEGVFPIxcDjiaHQGFQaQ==
4
ответ дан 30 November 2019 в 10:25
поделиться

Jeff Вы, вероятно, храните пароли неправильно , статья является превосходным чтением по этой теме.

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

Легкий: BCrypt.

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

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