2013-07-22 2 views
4

Что именно это делает? Я попытался посмотреть, но ничего не нашел.Что такое MessageDigest.update (byte [])?

Причина в том, что я хочу включить СОЛЬ byte[] в значение, которое затем хешируется. Так это должно быть сделано, как это (псевдокод):

MessageDigest.update(SALT); 
MessageDigest.update(value); 
digestValue = MessageDigest.digest(); 
// Where SALT, value and digestValue are array bytes, byte[] 

ли это добавить как SALT и value к финалу переваривать или я должен объединить обе переменные в одно и то update его один раз?

Я не мог найти ответ для этого в любой документации, любые разъяснения были бы оценены.

Спасибо, приветствия.

+1

Ваш код выглядит нормально. Его правильный способ создать соленый дайджест ценности. – Qwerky

+0

Вы посмотрели [документацию по API] (http://docs.oracle.com/javase/7/docs/api/java/security/MessageDigest.html)? – Jesper

+0

@Qwerky Спасибо за подтверждение :) – LuckyMe

ответ

5

MessageDigest isfull, звонки MessageDigest.update(byte[] input) накапливать дайджест обновлений, пока мы не позвоним MessageDigest.digest. Выполните этот тест, чтобы убедиться:

MessageDigest md1 = MessageDigest.getInstance("MD5"); 
    md1.update(new byte[] {1, 2}); 
    md1.update(new byte[] {3, 4}); 
    System.out.println(Arrays.toString(md1.digest())); 

    MessageDigest md2 = MessageDigest.getInstance("MD5"); 
    md2.update(new byte[] {1, 2, 3, 4}); 
    System.out.println(Arrays.toString(md2.digest())); 

выход

[8, -42, -64, 90, 33, 81, 42, 121, -95, -33, -21, -99, 42, -113, 38, 47] 
[8, -42, -64, 90, 33, 81, 42, 121, -95, -33, -21, -99, 42, -113, 38, 47] 
+0

Цените подробное объяснение, следуйте за вопросом: так что все, что 'update' делает, объединяет массивы вместе, ничего особенного? – LuckyMe

+0

Когда мы даем MessageDigest массив, он просто выполняет итерацию по этому массиву и обновляет дайджест байтом –