Как рассчитать хеш-значение файла в Java? [дубликат]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как рассчитать хеш-значение файла в Java? [дубликат]

Сообщение Anonymous »

Я написал следующую программу для вычисления хеш-значения строки SHA-256 на Java:

Код: Выделить всё

public class ToHash {

public static void main(String[] args)  {

byte[] data = "test".getBytes("UTF8");
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(data);
System.out.println(new BASE64Encoder().encode(hash));

}
}
Ну, это прекрасно работает. На следующем этапе я хочу разработать его таким образом, чтобы он мог принимать файл и вычислять его хеш-значение. Мое решение состоит в том, чтобы прочитать весь файл в массиве строк и вызвать метод дайджеста() для этого массива строк. Но есть две проблемы:
  • Я понятия не имею, как считать файл целиком в массив? В настоящее время я думаю, что мне нужно прочитать его построчно и добавить в массив новые строки!
  • Вышеуказанная методология требует много памяти для больших файлов!
  • Вышеуказанная методология требует много памяти для больших файлов!
  • Вышеуказанная методология требует много памяти!
  • p>


Это моя текущая программа для чтения файла:

Код: Выделить всё

public class ToHash {

public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException, FileNotFoundException, IOException {
// TODO code application logic here

// The name of the file to open.
String fileName = "C:\\Users\\ghasemi\\Desktop\\1.png";
BufferedReader br = null;

try {

String sCurrentLine;
br = new BufferedReader(new FileReader(fileName));
while ((sCurrentLine = br.readLine()) != null) {
byte[] data = sCurrentLine.getBytes("UTF8");
System.out.println(new BASE64Encoder().encode(data));
}

} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}

}
}
Похоже, что у объекта BufferedReader нет метода для чтения всего файла одним вызовом.

Подробнее здесь: https://stackoverflow.com/questions/320 ... le-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»