estou desenvolvendo uma aplicação e vou armazenar imagens em um arquivo e o pach
da imagem no banco,
gostaria de saber se tem como eu colocar uma senha no arquivo para apenas o sistema
conseguir ver as imagens!!
entaum acho que naum eh muito boa ideia… a naum ser se tiver algum jeito de comprimir pra diminuir o tamanho!!!
como seria trabalhar com esse tipo de encriptação???
vlw
Como é jpg, compressão não resolve, teria que criar um thumbnail da imagem em tamanho menor e, só qdo fosse necessário, buscaria a mesma com 800x600.
Não estou com um exemplo de criptografia agora. Assim que eu pegar, passo aqui.
WellingtonRamos
Segue:
packagecriptografia;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.ObjectInputStream;importjava.io.ObjectOutputStream;importjava.io.OutputStream;importjava.security.InvalidKeyException;importjava.security.Key;importjava.security.NoSuchAlgorithmException;importjava.security.SecureRandom;importjavax.crypto.Cipher;importjavax.crypto.CipherInputStream;importjavax.crypto.CipherOutputStream;importjavax.crypto.KeyGenerator;importjavax.crypto.NoSuchPaddingException;publicclassCriptografarArquivo{/** * Algoritmo/mode/Padding para criptografia */privatestaticfinalStringALGORITHM_MODE_PADDING="DES/ECB/PKCS5Padding";/** * Algorítmo de criptografia */privatestaticfinalStringKEY_GEN="DES";/** * Nome do arquivo onde ficará armazenada a chave de segurança * NÃO PERCA ESTE ARQUIVO, SOB PENA DE NÃO ABRIR MAIS OS ARQUIVOS EXISTENTES */privatestaticfinalStringSECRET_FILE="secret.cpt";/** * Chave de segurança. */privateKeykey=null;privatestaticCriptografarArquivoinstance;static{instance=newCriptografarArquivo();}publicstaticCriptografarArquivogetInstance(){returninstance;}publicCriptografarArquivo(){//Criar chave de criptografiafinalFilef=newFile(SECRET_FILE);f.setReadOnly();try{if(f.exists()){//Se o arquvivo que contêm a chave existir...finalObjectInputStreamin=newObjectInputStream(newFileInputStream(f));//Obter a chave e fechar o arquivokey=(Key)in.readObject();in.close();}else{//Caso não existir,// criar keygeneratorKeyGeneratorgenerator=KeyGenerator.getInstance(KEY_GEN);// inicializar Keygeneratorgenerator.init(newSecureRandom());// gerando keykey=generator.generateKey();// criando arquivo que armazenará a chaveObjectOutputStreamout=newObjectOutputStream(newFileOutputStream(f));// escrevendo a chave no arquivoout.writeObject(key);// fechandoout.close();}}catch(FileNotFoundExceptione){e.printStackTrace();}catch(NoSuchAlgorithmExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}catch(ClassNotFoundExceptione){e.printStackTrace();}finally{f.setWritable(true);}}publicInputStreamgetIn(Filefile)throwsFileNotFoundException,InvalidKeyException,NoSuchAlgorithmException,NoSuchPaddingException{finalFileInputStreamfileIn=newFileInputStream(file);returngetIn(fileIn);}privateInputStreamgetIn(finalInputStreamfileIn)throwsNoSuchAlgorithmException,NoSuchPaddingException,InvalidKeyException{finalCiphercipher=Cipher.getInstance(ALGORITHM_MODE_PADDING);cipher.init(Cipher.DECRYPT_MODE,key);returnnewCipherInputStream(fileIn,cipher);}publicOutputStreamgetOut(Filefile)throwsFileNotFoundException,InvalidKeyException,NoSuchAlgorithmException,NoSuchPaddingException{finalFileOutputStreamfileOut=newFileOutputStream(file);returngetOut(fileOut);}privateOutputStreamgetOut(finalOutputStreamfileOut)throwsNoSuchAlgorithmException,NoSuchPaddingException,InvalidKeyException{finalCiphercipher=Cipher.getInstance(ALGORITHM_MODE_PADDING);cipher.init(Cipher.ENCRYPT_MODE,key);returnnewCipherOutputStream(fileOut,cipher);}}
Classe teste
packagecriptografia;importjava.io.File;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;publicclassTesteCriptografar{publicTesteCriptografar(booleanler,StringfileName)throwsException{CriptografarArquivocripto=CriptografarArquivo.getInstance();Filefile=newFile(fileName);try{if(ler){InputStreamin=cripto.getIn(file);for(intcaractere=in.read();caractere!=-1;caractere=in.read()){System.out.print((char)caractere);}in.close();}else{OutputStreamout=cripto.getOut(file);out.write("Mais teste".getBytes());out.flush();out.close();}}catch(IOExceptione){e.printStackTrace();}}/** * @param args */publicstaticvoidmain(String[]args){//-r para ler, arquivo//uso leitura: TesteCriptografar -r [arquivo]//uso escrita: TesteCriptografar [arquivo]//Sem parametros: Equivalente a TesteCriptografar teste.arq//Apenas com -r: Equivalente a TesteCriptografar -r teste.arqtry{booleanler=false;//Pre-definido para escritaStringarquivo="teste.arq";if(args!=null&&args.length>0){if(args[0].equalsIgnoreCase("-r")){ler=true;if(args.length>1){arquivo=args[1];}}else{arquivo=args[0];}}newTesteCriptografar(ler,arquivo);}catch(Exceptione){//Para simplificare.printStackTrace();}System.exit(0);}}