Fiz o esquema para encryptar... mas caso eu deseje salvar o texto, fechar o programa na próxima vez qeu eu abrir ele não consegue desencryptar o mesmo texto....
Isso ocorre pois a cada execução da sua aplicação ele gera uma nova chave e você não consegue decriptar.
Eu acabei testando duas soluções no meu caso:
Criar uma chave, serializar o objeto e utilizar sempre este objeto para encriptar e decriptar.
Criar um certificado digital extrair a chave dele pra usar na (de)criptação.
A
anonimoxz
Com faço então para usar esta função, e resolver o problema??
danieldestro
Para trabalhar com a criptografia, com MD5 e RSA.
packagebr.com.guj.crypto;importjava.util.*;importjava.security.*;importjava.security.spec.*;importjava.io.InputStream;importjava.io.FileInputStream;publicclassCriptografia{privatestaticfinalStringalgorithm="RSA";privatestaticfinalStringsignature="MD5withRSA";privatestaticPrivateKeyprivateKey;privatestaticPublicKeypublicKey;publicstaticvoidmain(String[]args){Stringtxt="Stringaserencriptada";try{KeyPairkp=generateKeyPair();privateKey=kp.getPrivate();publicKey=kp.getPublic();byte[]txtAssinado=createSignature(privateKey,txt.getBytes());if(verifySignature(publicKey,txt.getBytes(),txtAssinado)){System.out.println("AssinaturaOK!");}else{System.out.println("AssinaturaNOTOK!");}}catch(Exceptione){e.printStackTrace();}}privatestaticKeyPairgenerateKeyPair()throwsException{// Generate a 1024-bit Digital Signature Algorithm (DSA) key pairKeyPairGeneratorkeyGen=KeyPairGenerator.getInstance(algorithm);keyGen.initialize(1024);KeyPairkeypair=keyGen.genKeyPair();returnkeypair;}publicstaticPrivateKeygetPrivateKeyFromInputStream(InputStreamis,Stringname,Stringpassword)throwsException{KeyStoreks=KeyStore.getInstance("JKS");char[]pwd=password.toCharArray();ks.load(is,pwd);is.close();Keykey=ks.getKey(name,pwd);if(keyinstanceofPrivateKey){return(PrivateKey)key;}returnnull;}publicstaticPrivateKeygetPrivateKeyFromFile(StringcertFile,Stringname,Stringpwd)throwsException{InputStreamis=newFileInputStream(certFile);returngetPrivateKeyFromInputStream(is,name,pwd);}publicstaticPrivateKeygetPrivateKeyFromResource(StringcertFile,Stringname,Stringpwd)throwsException{InputStreamis=Thread.currentThread().getContextClassLoader().getResourceAsStream(certFile);returngetPrivateKeyFromInputStream(is,name,pwd);}/** * Returns the signature for the given buffer of bytes using the private key. */publicstaticbyte[]createSignature(PrivateKeykey,byte[]buffer)throwsException{Signaturesig=Signature.getInstance(signature);//key.getAlgorithm());sig.initSign(key);sig.update(buffer,0,buffer.length);returnsig.sign();}/** * Verifies the signature for the given buffer of bytes using the public key. */publicstaticbooleanverifySignature(PublicKeykey,byte[]buffer,byte[]sign)throwsException{Signaturesig=Signature.getInstance(signature);//key.getAlgorithm());sig.initVerify(key);sig.update(buffer,0,buffer.length);returnsig.verify(sign);}publicstaticbyte[]getKeyedDigest(byte[]buffer,byte[]key)throwsException{MessageDigestmd5=MessageDigest.getInstance(algorithm);md5.update(buffer);returnmd5.digest(key);}publicstaticStringtxt2Hexa(byte[]bytes){if(bytes==null)returnnull;StringhexDigits="0123456789abcdef";StringBuffersbuffer=newStringBuffer();for(inti=0;i<bytes.length;i++){intj=((int)bytes[i])&0xFF;sbuffer.append(hexDigits.charAt(j/16));sbuffer.append(hexDigits.charAt(j%16));}returnsbuffer.toString();}}
Para manipular a Encrypter mas recebo a mensagem de NullPointerException o que pode ser??
danieldestro
Veja em que linha ocorre o NullPointerException… esse erro ocorre porquÊ você está tentando usar um objeto que não existe, ou seja, sua variável não aponta pra nenhum objeto, ela é null.
A
anonimoxz
Veja em que linha ocorre o NullPointerException… esse erro ocorre porquÊ você está tentando usar um objeto que não existe, ou seja, sua variável não aponta pra nenhum objeto, ela é null.
E como posso fazer para corrigir isto?
danieldestro
Na própria msg de erro ele fala a linha em que ocorre o NullPointerException.
A
anonimoxz
Mas qual a solução… Eu não sei mais o que fazer para resolver isto !!
danieldestro
O erro está nesta linha:
String tested = obj.decrypt(texto.getText());
Você não está instanciando “obj”, que é do tipo Encrypter.
A
anonimoxz
"danieldestro":
O erro está nesta linha:
String tested = obj.decrypt(texto.getText());
Você não está instanciando "obj", que é do tipo Encrypter.
Cara arrumei a classe mas quanod eu vou desencriuptar uma string ja encriptada sem antes encripta-la ele não consegue desencriptar o que pdoe ser....
Na segunda mensagem, que é a minha, eu falo o que pode estar acontecendo… le tudo de novo e vê se voce saca alguma coisa… senao aconselho vc a ler o artigo que eu fiz…
R
ronaldotkd
por favor alguem pode me dizer que erro seria esse : ERRO: NAO FOI POSSIVEL OBTER A LISTA DE CSP
ESTOU FAZENDO UM CADASTRO NO SITE DO SERPRO PARA CERTIFICADO DIGITAL, E NO FINAL DA ESSA MENSAGEM AI…