De Delphi para Java - Enroscos na codificação

Olá Pessoal,
To com o seguinte problema: Tenho que fazer uma aplicação que rode exatamente (ao menos nesse ponto) igual a que tenho em Delphi. Estou com dificuldade pra conseguir passar para o Java, principalmente na parte que ele usa ascII. Sei que Java não usa ascII.
Será que alguém pode me ajudar? A função é a seguinte no Delphi:

function STR_CODIFICA(P_SEQ: string): string;
var
L_RET: string;
L_I, L_TAM: integer;
begin
L_RET := ‘’;
L_TAM := length(P_SEQ);

for L_I := 1 to L_TAM do
L_RET := L_RET + chr((ord(P_SEQ[L_I]) + L_TAM) mod 256);

STR_CODIFICA := L_RET;
end;

Pra quem não sabe:
ord :recupera valor ascII de determinado caracter
mod: recupera o resto da divisão (%)

Oi Claire,

Estou bem enferrujado em Delphi mas tentei fazer algo parecido, juro para vc que não testei portanto veja se funciona ou se dá para aproveitar algo desse cód, OK.

 public String strCodifica(String strSeq) {
        String resultado = "";
        char[] arrayCharSeq = strSeq.toCharArray();
        
        for(int i=0; i<arrayCharSeq.length; i++) {
            resultado += Integer.toString(((int) arrayCharSeq[i]) % 256);
        }
        
        return resultado;
    }

Eu tava mais ou menos no mesmo caminho… :slight_smile:
Só duas coisas:

Uma delas é que vc esqueceu de somar o tamanho da ArrayList. Ahe ficou certinho… :slight_smile:

Porém, faltou uma coisa:

Voltar o valor pra String. Exemplo:
Se eu coloco A , equivale a 65 ascII. Pois bem, após passar todo o processo ele retorna 66. Como eu faço pra que volte pra caracter?..Que o certo seria retornar B.
Só falta isso mesmo pra que esteja zerado.

Valeu mesmo pela ajuda! :wink:

bom, eu não testei, mas é possivel que isto funcione:

[code] public String strCodifica(String strSeq) {
String resultado = “”;
char[] arrayCharSeq = strSeq.toCharArray();

    for(int i=0; i<arrayCharSeq.length; i++) {
        resultado += (char)(((int) arrayCharSeq[i]+i) % 256);
    }
   
    return resultado;
} [/code]

Era só converter pra char mesmo…
Deu certo!

Exceto pelo fato que invés de somar i tenha que somar o arrayCharSeq.length

Obrigada Pessoal :wink:

Claire,

Curiosidade minha, para que serve esta rotina? Qual o tipo de uso, por exemplo extrair uma “assinatura” de uma String, ou até mesmo um modo de criptografia?

É… Criptografia sim…
Apesar que tenho uma classe ótima pra isso… Tenho que fazer igual a do Delphi, as aplicações vão rodar em paralelo.

Mera curiosidade: por que ambas aplicações não utilizam um mesmo algoritmo de criptografia já consagrado (tipo BlowFish ou 3DES)?

Nada como criptografia caseira. :lol:

Também uso coisas assim pra gravar a senha de alguém no banco. Mesmo o DBA não sabe a senha e não precisa ser um super algoritmo de criptografia. Na verdade essa “criptografia de caracteres” é super simples.

A maioria das aplicações em Java aqui roda criptografia com o algorítmo de Rijndael.
Realmente esta criptografia é caseira… Mas, como já está assim na aplicação Delphi a algum tempo e rodando em cliente. Achei mais sensato fazer da mesma maneira em aplicação Java ao invés de alterar a aplicação Delphi e as senhas já existentes em banco.
Esse tipo de criptografia pode ser caseira, mas já resolve o problema. :wink: