@demon123
developer

Как создать файл, который содержит контрольную сумму?

Есть 3 пункта, я реализовал только 1 и 2. Вопрос: Как реализовать 3 пункт, если можно то на примере.
  1. Пользователь указывать URL файла;
  2. Программа запрашивает у пользователя место сохранения. Начинается скачивание файла;
  3. По окончанию скачивания, программа должна создать файл «ЗАДАННОЕ_ИМЯ.check» и разместить его рядом с загруженным файлом: o Файл должен содержать контрольную сумму или хэш загруженного файла.
  • Вопрос задан
  • 2470 просмотров
Пригласить эксперта
Ответы на вопрос 2
@protven
Алгоритм хеширования какой ?
Вот вариант для md5
stackoverflow.com/questions/304268/getting-a-files...
javarevisited.blogspot.ru/2013/06/how-to-generate-...

Вообще есть мнение что вы перепутали toster и окошко гугла...
Ответ написан
Комментировать
@demon123 Автор вопроса
developer
import java.io.FileInputStream;
import java.io.InputStream;
import java.security.MessageDigest;

public class ChecksumHandler {
    
    public static byte[] createChecksum(String filename, HashTypes hash) throws Exception {
        InputStream fis = new FileInputStream(filename);

        byte[] buffer = new byte[1024];
        MessageDigest complete = null;
        if(hash == HashTypes.MD5) complete = MessageDigest.getInstance("MD5");
        else if(hash == HashTypes.SHA1) complete = MessageDigest.getInstance("SHA1");
        else if(hash == HashTypes.SHA256) complete = MessageDigest.getInstance("SHA-256");
        else if(hash == HashTypes.SHA512) complete = MessageDigest.getInstance("SHA-512");
        else {
            fis.close();
            return null;
        }
        int numRead;
        do {
            numRead = fis.read(buffer);
            if (numRead > 0) {
                complete.update(buffer, 0, numRead);
            }
        } while (numRead != -1);
        fis.close();
        return complete.digest();
    }
    public static String getChecksum(String filename, HashTypes hash) throws Exception {
        byte[] b = createChecksum(filename, hash);
        String result = "";
        for (int i=0; i < b.length; i++) {
            result += Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring( 1 );
        }
        return result;
    }
}


Вот алгоритм хэширование, а как создать файл с расширением .check? на моем примере.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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