Base64

Dae galera,

Alguem ja mexeu com Base64?? assim consegui gerar a criptografia de um pdf , até ai beleza, mas o cliente tem um programa em delphi que gera criptografica do mesmo pdf para base64 e a minha criptografia e a criptografia do delphi saem diferente…to pensando que pode ser a classe que eu to usando …

Alguem ja passou por isso? sabe algo a respeito de cada linguagem gerar uma criptografia num padrão diferente??

valeu pela atenção

[]'s

Olá guilhermetn3 ,
Você tem como conseguir os códigos do base64 que ele utilizou no Delphi?
Acho que seria interessante colocar eles lado a lado com a sua implementação para ver se não tem nenhuma chave diferente ou algo assim.

[]´s

aham , ja pedi para ele isso , como é um software desenvolvido em parceria , eles vão mandar os fontes sem problema , e pedi tbem se eles tão usando um pacote nativo ou externo do Delphi para gerar a criptografia, se for nativo dae acho que to fu… mas se for externo talvez consiga algo igual em java…

oq vc acha?

vc entende bem de delphi?

um abraço e valeu por responder

Olha cara eu fiz um trabalho sobre criptografia na facul e peguei um código mais ou menos assim na net (não lembro aonde), dizem que Base64.
Boa Sorte!

import javax.crypto.*;
import javax.crypto.spec.*;
import javax.swing.JOptionPane;

import com.sun.xml.internal.messaging.saaj.packaging.mime.util.BASE64DecoderStream;
import com.sun.xml.internal.messaging.saaj.packaging.mime.util.BASE64EncoderStream;
import java.security.spec.KeySpec;

public final class Base64 {
	 private static SecretKey skey;
	 private static KeySpec ks;
	 private static PBEParameterSpec ps = new PBEParameterSpec (
	 		new byte[]{3,1,4,1,5,9,2,6}, 20);
	 private static final String algorithm = "PBEWithMD5AndDES";
	 private static SecretKeyFactory skf;
	 static{
	 	try{
	 		skf = SecretKeyFactory.getInstance(algorithm);
	 	}
	 	catch(Exception e){
	 		JOptionPane.showMessageDialog(null, e.getMessage());
	 	}
	 }
	 
	 public static final byte[] desencriptar(final byte[] b, final String senha)
	 	throws Exception{
	 	
	 	ks = new PBEKeySpec (senha.toCharArray());
	 	skey = skf.generateSecret (ks);
	 	
	 	final Cipher cipher = Cipher.getInstance(algorithm);
	 	cipher.init(Cipher.DECRYPT_MODE, skey, ps);
	 	return BASE64DecoderStream.decode(cipher.doFinal(b));
	 }
	 public static final byte[] encriptar(final byte[] b, final String senha)
		 throws Exception{
	 	
	 	ks = new PBEKeySpec (senha.toCharArray());
	 	skey = skf.generateSecret (ks);
	 	final Cipher cipher = Cipher.getInstance(algorithm);
	 	cipher.init(Cipher.ENCRYPT_MODE, skey, ps);
	 	return cipher.doFinal(BASE64EncoderStream.encode(b));
	 }
}

valeu ae Ivo

vou testar e ver se ele criptografa igual a criptografia do delphi

[]'s

O problema certamente pode estar com o conjunto de caracteres utilizados no java e no Delphi.
Lembrando que o Delphi utiliza a página de código padrão do windows e o java utf.
Você poderia converter as Strings do java para o encodding correspondente ou tentar o inverso.
O base 64 normalmente é formado pelos conjuntos de 6 bits, logo se você pega uma seqüência de 3 bytes vocês produz 4 símbolos da base de 64.
Lembrando que a base é 2^6 e os 64 símbolos são:

O base 64 é padronizado pela RFC 989 (PEM de 87), depois 1421 e tem alguma coisa também na 2045.

http://javabase64.sourceforge.net/

fw

Dieval Guizelini

bahh valeu mestre …

pse olhei o código do delphi , e eles fizeram na unha mesmo , tipo uma função que faz estes testes e vai convertendo …

vou dar uma olhada neste site que vc me indicou …

e se tiver alguma dúvida posto ae , bleza?

[]'s