Ola a todos da lista, estou com um problema de criptografia com chaves que
se modificam a cada caractere e gostaria de pedir a ajuda de voces, eu
desconfio que o problema possa ser com o \"int\", essa rotina eu fiz
primeiramente no Delphi e agora precisava passar para o Java sem ser alterada.
Obrigado pela ajuda
Obs.: Os k#\'s sao constantes, ate a metade ele decodifica corretamente, depois
se perde todo, a evolucao do resultado é a seguinte:
Delphi Java
Senha Chave1 Senha Chave1
F 31149 F 31149
FI 1120140091 FI 1120140091
FIL 1874945386 FI 1865758314
FILO 1208914660 FI, -2070023708
O codigo Delphi é o seguinte:
function Decrypt(const InString:string): string;
var
I : Byte;
begin
chave1 := (k1 + (Length(InString.Text)+k2));
chave2 := (k3 + (Length(InString.Text)+k4));
chave3 := (k5 + (Length(InString.Text)+k6));
Result := \'\';
for I := 1 to Length(InString) do
begin
Result := Result + CHAR(Byte(InString[I]) xor (chave1 shr 8));
chave1 := (Byte(InString[I]) + chave1) * chave2 + chave3;
end;
end;
E o Java:
public String criptografia(String senha_des)
{
byte i;
int chave1 = (k1 + (senha_des.length()+k2));
int chave2 = (k3 + (senha_des.length()+k4));
int chave3 = (k5 + (senha_des.length()+k6));
String resultado = \"\";
for(i=0;i<senha_des.length();i++)
{
resultado = resultado + (char)((byte)senha_des.charAt(i) ^ (chave1 >> 8));
chave1 = ((byte)senha_des.charAt(i) + chave1) * chave2 + chave3;
};
return resultado;
};
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------