Я работал над кодом для шифрования и дешифрования изображений через веб-приложение Spring, в котором я использую Thymeleaf.Я проверил каждый метод, участвующий в процессе, и каждый из них является надежным.Предполагается, что процесс будет проходить следующим образом:
Пользователь1 загружает изображение и ключ, приложение разбивает изображение на пиксели, а затем на 128-битные stateHexes, stateHexes шифруются с использованием AES и перестраиваются в зашифрованное изображение для отображенияПользователю1 для скачивания.Затем пользователь 1 отправляет изображение пользователю 2, который затем загружает изображение и расшифровывает его, используя тот же процесс.
Когда я воспринимаю это как вышеописанный сценарий, изображение как-то меняется после сохраненияОднако, если я обращаюсь с этим следующим образом, файл прекрасно шифруется и дешифруется.
Поэтому я предполагаю, что проблема должна заключаться либо в сохранении файла, либо в извлечении файла, либо в какой-то другой проблеме, связанной с обработкой файла.
Ниже я покажу фрагменты кода того, как я загружаю и сохраняю изображения.
Вот так я получаю изображение
// Get the filename and path for the image passed in from user
Path fileNameandPath = Paths.get(uploadDirectory, file.getOriginalFilename());
// Generate the file and write the image onto it
File imageFile = fileNameandPath.toFile();
BufferedImage image = null;
try {
Files.write(fileNameandPath, file.getBytes());
image = ImageIO.read(imageFile);
Files.delete(fileNameandPath);
} catch (IOException e) {
e.printStackTrace();
System.out.println("COULDNT READ IMAGE AT = " + fileNameandPath);
}
И вот как я создаю outputImage
String outputFilePath = new File("src/main/resources/static").getAbsolutePath() + "\\output.jpg";
File outputFile = new File(outputFilePath);
try {
outputFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
System.out.println("FILE ALREADY EXISTS");
}
// Write the image to the outputfile
try {
ImageIO.write(outputImage, "jpg", outputFile);
} catch (IOException e) {
e.printStackTrace();
}
Я передаю полностью черное изображение (гекс каждого пикселя)код - 000000), и он читает изображение и шифрует его, как и ожидалось, но при расшифровке он читает предыдущее изображение неправильно, что наводит меня на мысль, что это не код, а скорее всего, как файл сохраняется / восстанавливается?У меня только одно предположение: что-то файл перепутан.Если у кого-то есть какие-либо подсказки относительно того, почему это происходит, любая помощь или указания будут признательны.
Я думаю, что это может иметь отношение к тому, как я пишу изображение.Чтение изображения не проблема, но то, как я пишу изображение, похоже, меняет его.