Conjunto de caracteres...mais uma vez!

Por que java só reconhece os 128 primeiros caracteres da tabela ASCII? Não tem uma forma de eu trabalhar com os 8 bits e então fazer com que meu programa reconheça 256 caracteres? Preciso disso pra usar em uma rotina de criptografia…alguém pode me ajudar?

Java trabalha com caracteres Unicode, não ASCII. Dê uma olhada nesse artigo:

:arrow: http://www.joelonsoftware.com/articles/unicode.html

[]'s

OK, já sabia que java trabalha com UNICODE, mas resumindo…não tem como java reconhecer caracteres do tipo §, ¬, ¢, £, ³, º, °, ª, ┤, «, ╔, Î, õ,­­±, …etc ?

Tem, mas vc precisa usar o código Unicode do caractere.

ok, não sei se no texto não fala nisso, ou fala e eu me descuidei…, mas como faço isso? Preciso montar uma tabelinha com algum objeto collection fazendo referência entre CARACTER ASCII – CARACTER UNICODE. Seria algo assim ou estou viajando ? Pode me ajudar ?

Olá

Será que eu estou entendendo sua dúvida? O Java trabalha da forma como você desejar. Se usar o encoding adequado o Java reconhecerá os 256 caracteres correspondentes a sua máquina e ao seu sistema operacional. É claro que sem as devidas precauções, quando mudar para outra máquina com outra configuração de sistema operacional, os caracteres acima de 128 podem mudar e isto não tem nada a ver com Java.

Como vc precisa usar em criptografia o melhor conselho que posso lhe dar é que estude direitinho esta questão tanto sob o ponto de vista dos encoding em Java como seu uso em criptografia e possivelmente como isto pode ficar quando armazenado em uma base de dados. Qualquer dica minha aqui poderia leva-lo a perder tempo escrevendo código impróprio.

[]s
Luca

A rotina de criptografia, irá criptografar senhas e armazenar em um banco de Dados Oracle. Preciso implementá-la em java de maneira que minha aplicação WEB e a aplicação desktop, feita em Delphi, “falem a mesma língua”, ou seja, tanto a aplicação Delphi quanto a Java devem criptografar e decriptografar de forma idêntica. A rotina em Delphi já está feita e funciona perfeitamente. Preciso agora implementar minha parte em java. Delphi trabalha perfeitamente com esses 256 caracteres(8 bits da tabela ASCII) agora preciso trabalhar com eles no Java. Já tentei mudar strings pra UTF-8, mas não adiantou, quando passa dos 128 caracteres, só vejo uma interrogação de cabeça pra baixo como caracter correspondente…

Posso ter usado errado né…se puder me dar uma dica, pode ter certeza que pra mim vai ser muito útil !!! :idea:

Olá

Se as duas aplicações não conseguem ler a mesma coisa então não vejo como se pode dizer que uma delas funciona perfeitamente. Quando vários programas são usados para compor um sistema não se deve ficar satisfeito com o funcionamento isolado de uma das partes.

No seu caso, além de estudar como as coisas são em java, sugiro estudar também como tudo se passa no Delphi e também no Oracle.

[]s
Luca

Funciona perfeitamente sim, pois como não consegui, ainda, implementar a mesma rotina em Java, fizemos um objeto COM que criptografa e decriptografa as senhas. Através de minha aplicação em Java, eu invoco o objeto. Até aí tudo funciona, mas quero tirar o objeto COM e implementar em java puro, só ísso…se é que posso dizer “só isso”.

O que se passa no Delphi é o uso de ASCII de 8 bits, o que faz ele reconhecer aqueles “caracteres malucos” sem problema.

Quando a rotina joga esses caracteres no banco, eu vejo todos eles sem problema, dá forma como foram cripotografados.

Resumindo…preciso de ajuda de como fazer pra minha aplicação Java reconhecer 256 caracteres(incluindo aqueles caracteres estranhos).

Veja o link abaixo:
http://www.catabits.com.br/exibe.php?sec=curso&mat=8

Olá

Wender, uma conversa só é perfeita se os 2 lados falam a mesma língua. Se o lado do Delphi está ignorando fatos como por exemplo descritos em ASCII Chart então pode ser que o Dephi que esteja errado.

Neste link que achei com 1 segundo de googlada, leia especialmente isto:[list]Microsoft Windows ® has a different notion about what the high-order (upper 128) characters are, as shown in the table below.[/list]

Conforme afirmei antes, o Java permite que você escreva em qualquer língua usando qualquer caracter. É só uma questão de entender como as coisas realmente funcionam. De todo modo procure aqui mesmo no GUJ que vai encontrar muitos posts sobre encoding, inclusive meus.

[]s
Luca

Ok Luca…não quero nada pronto não, só queria um “empurrãozinho”, mas pode deixar que vou procurar no google mais sobre o assunto. Valeu !!!

Olá!

Você conhece a criptografia que o Linux utiliza para criptografar senhas dos usuários, a MD5Crypt? Sugiro a você utilizá-la em seus sistemas, pois ela tem provado ser muito eficiente.

Pelo que pude perceber, vc trabalha com Delphi, Java e mais alguma outra linguagem pra web?

Bom, eu desenvolvi um componente de criptografia MD5 para delphi que gera hashes critptográficos totalmente compatível com os hashes do Linux e com os hashes gerados pelas funções de criptografia do Perl e do PHP. Para o seu caso, acho que tenho aqui a versão pra java também. Uma classe que gera os mesmos hashes MD5.

Se quiser saber mais sobre o LinuxCrypt, dê um pulo no meu site! Qualquer dúvida, basta postar uma mensagem por lá!

http://sparrow.webhop.net

Boa sorte e grande abraço!

Bootsector

[quote=“wender”]A rotina de criptografia, irá criptografar senhas e armazenar em um banco de Dados Oracle. Preciso implementá-la em java de maneira que minha aplicação WEB e a aplicação desktop, feita em Delphi, “falem a mesma língua”, ou seja, tanto a aplicação Delphi quanto a Java devem criptografar e decriptografar de forma idêntica. A rotina em Delphi já está feita e funciona perfeitamente. Preciso agora implementar minha parte em java. Delphi trabalha perfeitamente com esses 256 caracteres(8 bits da tabela ASCII) agora preciso trabalhar com eles no Java. Já tentei mudar strings pra UTF-8, mas não adiantou, quando passa dos 128 caracteres, só vejo uma interrogação de cabeça pra baixo como caracter correspondente…

Posso ter usado errado né…se puder me dar uma dica, pode ter certeza que pra mim vai ser muito útil !!! :idea:[/quote]