Как я могу создать хеш MD5?

Двузначные правила для запоминания:

  1. Если поля касаются, они сжимаются.
  2. Вложенные элементы «прижимают», если только margin отделяет их.
  3. Элементы вне «Потока» ведут себя по-разному. То есть, это поведение не применяется одинаково для плавающих или позиционных: фиксированных или позиционных: абсолютных элементов.

Итак, для этого HTML (вложенные div):

A

и этот начальный CSS:

#outer {
    margin-top:10px;
    background:blue;
    height: 100px;
}
#inner {
    margin-top:20px;
    background:red;
    height: 33%;   
    width: 33%;
}

Граница сжимается до max касательных полей и вложенных div «прижимает» к началу контейнера, например: ( См. его в jsFiddle. ) Nested margin collapse [/g6]

Но в тот момент, когда два поля разделены - границей или предшествующим контентом в контейнер, например, поля больше не касаются, поэтому они больше не сжимаются.

EG, немного, без разрыва белого пространства, например:

 
A

убивает коллапс: ( Смотрите, что в jsFiddle. ) Nested margin doesn't collapse [/g7]

Использование рамки вместо ведущего текста: ( Fiddle ) no-collapse, border [/g8]

958
задан bjb568 13 August 2014 в 03:05
поделиться

8 ответов

java.security.MessageDigest Ваш друг. Звоните getInstance("MD5") для получения дайджеста сообщения MD5, который можно использовать.

574
ответ дан Nicola Isotta 13 August 2014 в 03:05
поделиться

Возможно, вы захотите взглянуть на класс DigestUtils проекта кодека apache commons , который предоставляет очень удобные методы для создания дайджестов MD5 или SHA.

254
ответ дан lutzh 13 August 2014 в 03:05
поделиться

Нет необходимости делать это слишком сложным. DigestUtils отлично работает и позволяет вам комфортно работать с хэшами md5.

DigestUtils.md5Hex(_hash);

или

DigestUtils.md5(_hash);

Либо вы можете использовать любые другие методы шифрования, такие как sha или md.

21
ответ дан Cœur 13 August 2014 в 03:05
поделиться

MD5 прекрасно подходит, если Вам не нужна лучшая безопасность, и если Вы делаете что-то как проверка целостности файлов тогда, безопасность не является соображением. В таком как случай Вы могли бы хотеть считать что-то более простым и быстрее, такие как Adler32, который также поддерживается библиотеками Java.

5
ответ дан 13 August 2014 в 03:05
поделиться
  • 1
    После вызова к resize можно быть совершенно уверены, что внутренняя строка или isn' t завершенный пустым указателем, поскольку реализация требует. После вызова к resize, в конце концов, у Вас должна быть допустимая строка n символов (дополненный нулевыми символами по мере необходимости). - Однако это показывает отсутствие понимания для std::string класс: memcpy используется или из незнания или как дезинформированная попытка для производительности (из-за эти resize, звонят, код заканчивает тем, что присвоил значения буферу дважды). – UncleBens 31 December 2009 в 23:23

Смотрите на следующую ссылку, Пример получает Хеш MD5 предоставленного изображения: Хеш MD5 Изображения

6
ответ дан 13 August 2014 в 03:05
поделиться

Если Вы на самом деле хотите ответ назад как строку в противоположность массиву байтов, Вы могли бы всегда делать что-то вроде этого:

String plaintext = "your text here";
MessageDigest m = MessageDigest.getInstance("MD5");
m.reset();
m.update(plaintext.getBytes());
byte[] digest = m.digest();
BigInteger bigInt = new BigInteger(1,digest);
String hashtext = bigInt.toString(16);
// Now we need to zero pad it if you actually want the full 32 chars.
while(hashtext.length() < 32 ){
  hashtext = "0"+hashtext;
}
256
ответ дан CSchulz 13 August 2014 в 03:05
поделиться
  • 1
    Я думаю, что это могло бы быть правильно; дефект станд. 530 говорит, что оператор [] непрерывен, но интерфейс итератора, как гарантируют, не будет и заключает в кавычки 23.4.4. Я откапываю свой стандарт для проверки. – Todd Gardner 31 December 2009 в 20:47

MessageDigest класс может предоставить Вам экземпляр обзора MD5.

При работе со строками и crypto классами быть уверенным всегда определяют кодирование, Вы хотите представление байта в. Если Вы просто будете использовать string.getBytes(), то это будет использовать значение по умолчанию платформы. (Не все платформы используют те же значения по умолчанию)

import java.security.*;

..

byte[] bytesOfMessage = yourString.getBytes("UTF-8");

MessageDigest md = MessageDigest.getInstance("MD5");
byte[] thedigest = md.digest(bytesOfMessage);

, Если у Вас есть много данных, смотрят на .update(byte[]) метод, который можно неоднократно называть. Тогда звоните .digest() для получения получающегося хеша.

675
ответ дан juan 13 August 2014 в 03:05
поделиться
  • 1
    Я пропустил прямо по дефектной ссылке в Sutter' s сообщение, that' s, почему я пропустил его. В любом случае говорит дефект " мы почти уже требуем смежности, " (ключевое слово: почти) и я don' t видят, как его ссылка на мультимножество релевантна (basic_string, последовательность с итераторами произвольного доступа). Однако я думаю, что важная вещь устранить является этим " учитывая существование данных (), и определение оператора [] и в с точки зрения данных, я don' t верят it' s возможный записать полезное и стандартное - соответствующий basic_string это isn' t непрерывный " – James McNellis 31 December 2009 в 21:11

Ответ мороженого корректен, однако обратите внимание, что, если Вы абсолютно не должны использовать MD5 (например, вызванный на Вас для совместимости), лучшим выбором является SHA1, поскольку MD5 имеет слабые места к долгосрочному использованию.

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

16
ответ дан frankodwyer 13 August 2014 в 03:05
поделиться
  • 1
    Спасибо за редактирование, I' ve удалил-1:) – Richard Szalay 4 January 2010 в 19:57
Другие вопросы по тегам:

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