1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Ler todos os pixels de uma imagem

Bom dia, estou fazendo um trabalho em java onde preciso criptografar uma imagem, salvar a criptografia em um arquivo jpg, decriptografar este arquivo e salvar o arquivo decriptografado em outra pasta.

Estou lendo as bandas de RGB (não sei se estou fazendo certo), mas não está lendo o arquivo inteiro, só uma banda dele. Na hora de salvar, ele cria um arquivo jpg nas pastas, mas não os arquivos criptografados e decriptografados.

public class EncriptaDecriptaAES {

    static String IV = "AAAAAAAAAAAAAAAA";
    static String chaveencriptacao = "0123456789abcdef";

    public static void main(String[] args) {
        try {
            Raster raster;
            EncriptaDecriptaAES aux = new EncriptaDecriptaAES();
            BufferedImage imagem = ImageIO.read(new File("D:/Área de Trabalho/onibus.jpg"));  

            raster = imagem.getRaster();
            int altura = imagem.getHeight();
            int largura = imagem.getWidth();
            int pixels[] = new int[altura * largura];
            int bandaInt;
            String banda[] = new String[imagem.getRaster().getNumBands()];
            String bandaBinaria;
            int k = 0;
            for (int l = 0; l < largura; l++) {
                for (int z = 0; z < altura; z++) {
                    raster.getPixel(l, z, pixels);
                    k++;
                }
            }
            banda[0] = "" + pixels[0] + pixels[1] + pixels[2];  //Banda RGB (255,255,255)
            bandaInt = Integer.parseInt(banda[0]);               //Converte a banda que esta em string para int 
            bandaBinaria = Integer.toBinaryString(bandaInt);        //converte a banda int para binario

            String imagemOriginal = "" + bandaBinaria; 


            byte[] imagemencriptada = encrypt(imagemOriginal, chaveencriptacao);
            System.out.println("Encriptada: " + imagemencriptada);
            aux.salvaImagemEncriptada(imagemencriptada);  
            String imagemdecriptada = decrypt(imagemencriptada, chaveencriptacao);
            System.out.println("Decriptada: " + imagemdecriptada);
            aux.salvaImagemDecriptada(imagemdecriptada.getBytes());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static byte[] encrypt(String textopuro, String chaveencriptacao) throws Exception {
        Cipher encripta = Cipher.getInstance("AES/CBC/PKCS5Padding", "SunJCE");
        SecretKeySpec key = new SecretKeySpec(chaveencriptacao.getBytes("UTF-8"), "AES");
        encripta.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(IV.getBytes("UTF-8")));
        return encripta.doFinal(textopuro.getBytes("UTF-8"));
    }

    public static String decrypt(byte[] textoencriptado, String chaveencriptacao) throws Exception {
        Cipher decripta = Cipher.getInstance("AES/CBC/PKCS5Padding", "SunJCE");
        SecretKeySpec key = new SecretKeySpec(chaveencriptacao.getBytes("UTF-8"), "AES");
        decripta.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(IV.getBytes("UTF-8")));
        return new String(decripta.doFinal(textoencriptado), "UTF-8");
    }

    private void salvaImagemEncriptada(byte[] img) throws IOException {
        String caminhoSalvar = "C:/ImagensCrip/img1.jpg";
        File file = new File(caminhoSalvar);
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
        bos.write(img);
        bos.close();
    }

    private void salvaImagemDecriptada(byte[] img) throws IOException {
        String caminhoSalvar = "C:/Área de Trabalho/ImagensDecrip/img1.jpg";
        File file = new File(caminhoSalvar);
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
        bos.write(img);
        bos.close();
    }
}

Se alguém puder me ajudar

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java criptografia ou faça a sua própria pergunta.