Pessoal, tenho uma rotina de criptografia e decriptografia em Delphi que usa a tabela ASCII de 8 bits, ou seja, 256 caracteres. A rotina em Delphi criptografa a String “1204” assim:ƒ“¢– enquanto que o a mesma String no java fica assim:??ó?
Acho que o problema está no character set do java. O que devo mudar para que eu possa trabalhar com o mesmo character set do Delphi ou ainda com a tabela ASCII de 8 bits e reconhecer os 256 caracteres?
No Delphi a função Ord(caracter) me dá o valor ASC do caracter e a função Chr(numero) me dá o caracter correspondente ao número e reconhece sempre os 256 caracteres.
No java posso simplesmente fazer isso aí abaixo?
int i = 150;
char c = 'V';
System.out.println("Valor ASC de V: " + (int) c);
System.out.println("Caracter ASC de " + i + ": " + (char) i );
Alguém já trabalhou com essas codificações e pode me dar uma ajuda, estou precisando urgente…
Uma coisa muito importante que vc precisa entender logo de cara: NAO EXISTE ASCII EM JAVA.
Java so usa Unicode, e um encoding para conversao entre Unicode e o resto dos encodings (ou character sets). Internamente, Java usa dois bytes para cada char, e converte de acordo sempre que voce joga uma String pra algum outro lugar (conexao de rede, label, System.out.println, e por ai vai).
O melhor jeito de fazer o que voce quer em Java eh tratar a string que vem do Delphi como uma sequencia de bytes, e converter “na unha”.
Na verdade a sequencia não vem do Delphi…quando o usuário digitar a senha em um formulário de cadastro eu tenho que criptografar essa senha e posteriormente decriptografar para um eventual login. Tanto a aplicação em Delphi quanto a web, podem cadastrar usuários, por isso as rotinas de criptografia e decriptografia devem ser iguais.
Quando vc diz tratar como bytes seria fazer isso aí?