| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2010 16:57:55
|
pedroroxd
GUJ Master
![[Avatar]](/images/avatar/dd9206848200f155f3af5e05d724d75d.png)
Membro desde: 26/08/2009 14:56:11
Mensagens: 1615
Localização: Santa Rita do Sapucaí - O vale da Eletrônica
Offline
|
Pessoal, tava dando uma olhada na Ascii Table, e tava mandando imprimir os valores de cada letra para teste:
Depois, eu tento voltar para a letra assim:
Para todos os valores da taebla funcionam, mas para caracteres especiais não (do tipo á,à,â,ã,ä,ç).
Dá esse erro: Exception in thread "main" java.lang.NumberFormatException: For input string: "11111111111111111111111111000111"
Se eu faço assim:
Funciona, mas ae ele vai pegar de todos os pixels da imagem, inclusive os que eu não quero... Estou usando ele, mas como que eu faço para parar o algoritimo de varredura da imagem quando terminar a frase??
A imagem que estou falando é essa: http://www.guj.com.br/posts/list/15/221333.java
This message was edited 6 times. Last update was at 16/10/2010 21:10:07
|
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja Isso!
"Quem quer fazer, arranja um jeito. Quem não quer, uma desculpa."
'The dictionary is the only place that success comes before work!"
"Não diga à Deus que você tem um grande problema, diga ao problema que você tem um grande Deus."
"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple.
But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."
"O Brasil é um país geométrico. Tem problemas angulares, discutidos em mesas redondas, por um monte de bestas quadradas."
"Olho por olho, e o mundo acabará cego."
"Se falam pelas costas, é sinal que eu to na frente" |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2010 19:01:08
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
O problema é que caracteres especiais, caracteres estrangeiros, simbolos, etc, seguem a tabela Unicode, e não a tabela ascii. É por isso que o char, no Java, tem 2 bytes e não 1.
Uma das formas de resolver isso é você parar de lidar com strings, e passar a lidar com o texto byte-a-byte, como se fosse um arquivo binário. E depois fazer o mesmo para recompor. Agora, seu texto ocupará o dobro do espaço, o que exigirá uma imagem duas vezes maior.
Por isso, além de tratar byte-a-byte, recomendo que você use um inputstream com compactação.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2010 19:06:30
|
Teehee
What is classpath?
Membro desde: 25/09/2010 20:01:29
Mensagens: 9
Offline
|
String str = Integer.toBinaryString((byte) byteValue);
Remove esse cast que funciona.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2010 19:21:38
|
pedroroxd
GUJ Master
![[Avatar]](/images/avatar/dd9206848200f155f3af5e05d724d75d.png)
Membro desde: 26/08/2009 14:56:11
Mensagens: 1615
Localização: Santa Rita do Sapucaí - O vale da Eletrônica
Offline
|
Consegui... deu certo, vlw ae vini Agora estou com um problema: Saber quando parar de pegar texto da imagem Eu fiz o seguinte: No primeiro pixel (0,0) eu do um setRed com o tamanho do texto... Depois na hora de descriptografar eu volto lá e do um getRed no primeiro pixel... Funciona certinho... Mas tem 1 problema... Quando o texto tem mais do que 255 caracteres não dá pra dar um setRed com ele... Pensei em /1000 e depois fazer *1000 mas ele só aceita valor inteiro... Então se tiver 300 caracteres, vai pra 0,3 e volta pra 0...
This message was edited 1 time. Last update was at 16/10/2010 19:22:01
|
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja Isso!
"Quem quer fazer, arranja um jeito. Quem não quer, uma desculpa."
'The dictionary is the only place that success comes before work!"
"Não diga à Deus que você tem um grande problema, diga ao problema que você tem um grande Deus."
"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple.
But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."
"O Brasil é um país geométrico. Tem problemas angulares, discutidos em mesas redondas, por um monte de bestas quadradas."
"Olho por olho, e o mundo acabará cego."
"Se falam pelas costas, é sinal que eu to na frente" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2010 19:26:12
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Transforme o int da cor numa Color, diretamente. Aí grave essa color no primeiro pixel.
Outra opção é fazer como o C faz. Criptografa um 0 no final do texto.
Quando chegar no 0, você sabe que o texto acabou.
Não estou falando de um pixel com a cor 0, mas de colocar 0 em todos os bits que você usa para as esconder as letras.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2010 19:36:09
|
pedroroxd
GUJ Master
![[Avatar]](/images/avatar/dd9206848200f155f3af5e05d724d75d.png)
Membro desde: 26/08/2009 14:56:11
Mensagens: 1615
Localização: Santa Rita do Sapucaí - O vale da Eletrônica
Offline
|
ViniGodoy wrote:Transforme o int da cor numa Color, diretamente. Aí grave essa color no primeiro pixel.
É isso que tava tentando fazer... Assim:
Mas ae da erro quando é mais que 255...
ViniGodoy wrote:Não estou falando de um pixel com a cor 0, mas de colocar 0 em todos os bits que você usa para as esconder as letras.
Mas não pode ocorrer coincidentemente de ter um texto com 0 nakeles bits?
|
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja Isso!
"Quem quer fazer, arranja um jeito. Quem não quer, uma desculpa."
'The dictionary is the only place that success comes before work!"
"Não diga à Deus que você tem um grande problema, diga ao problema que você tem um grande Deus."
"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple.
But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."
"O Brasil é um país geométrico. Tem problemas angulares, discutidos em mesas redondas, por um monte de bestas quadradas."
"Olho por olho, e o mundo acabará cego."
"Se falam pelas costas, é sinal que eu to na frente" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2010 19:44:40
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Não. O 0 em todas as tabelas representa NUL.
This message was edited 1 time. Last update was at 16/10/2010 19:45:06
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2010 19:47:32
|
pedroroxd
GUJ Master
![[Avatar]](/images/avatar/dd9206848200f155f3af5e05d724d75d.png)
Membro desde: 26/08/2009 14:56:11
Mensagens: 1615
Localização: Santa Rita do Sapucaí - O vale da Eletrônica
Offline
|
Entendi...
Arranjei uma outra maneira:
E na hora de voltar:
Testei com uns textos grandes aqui e deu certo...
RGB tem limite também? De quanto é?
|
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja Isso!
"Quem quer fazer, arranja um jeito. Quem não quer, uma desculpa."
'The dictionary is the only place that success comes before work!"
"Não diga à Deus que você tem um grande problema, diga ao problema que você tem um grande Deus."
"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple.
But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."
"O Brasil é um país geométrico. Tem problemas angulares, discutidos em mesas redondas, por um monte de bestas quadradas."
"Olho por olho, e o mundo acabará cego."
"Se falam pelas costas, é sinal que eu to na frente" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2010 19:51:24
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Se você usar os 3 bytes do R, G e B, você terá 24 bits para guardar o número. Portanto, o limite será de (2^24)-1, ou seja: 16777215.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2010 20:21:22
|
pedroroxd
GUJ Master
![[Avatar]](/images/avatar/dd9206848200f155f3af5e05d724d75d.png)
Membro desde: 26/08/2009 14:56:11
Mensagens: 1615
Localização: Santa Rita do Sapucaí - O vale da Eletrônica
Offline
|
ViniGodoy wrote:Se você usar os 3 bytes do R, G e B, você terá 24 bits para guardar o número. Portanto, o limite será de (2^24)-1, ou seja: 16777215.
Axo que dá! rs
Eu colokei para criptografar um texto "grandinho" (de 8940 caracteres):
Ele só conseguiu chegar até o 1370, depois deu isso:
Exception in thread "Thread-4" java.lang.StackOverflowError
at sun.nio.cs.SingleByteEncoder.encodeArrayLoop(Unknown Source)
at sun.nio.cs.SingleByteEncoder.encodeLoop(Unknown Source)
at java.nio.charset.CharsetEncoder.encode(Unknown Source)
at sun.nio.cs.StreamEncoder.implWrite(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at java.io.BufferedWriter.flushBuffer(Unknown Source)
at java.io.PrintStream.write(Unknown Source)
at java.io.PrintStream.print(Unknown Source)
at java.io.PrintStream.println(Unknown Source)
Meu método chama ele mesmo várias vezes, deve tar estorando...
Ali no (y<text.lenght) ele vai chamar dinovo, até completar o texto..>
|
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja Isso!
"Quem quer fazer, arranja um jeito. Quem não quer, uma desculpa."
'The dictionary is the only place that success comes before work!"
"Não diga à Deus que você tem um grande problema, diga ao problema que você tem um grande Deus."
"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple.
But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."
"O Brasil é um país geométrico. Tem problemas angulares, discutidos em mesas redondas, por um monte de bestas quadradas."
"Olho por olho, e o mundo acabará cego."
"Se falam pelas costas, é sinal que eu to na frente" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2010 20:50:58
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Por que seu método chama a si mesmo várias vezes?
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2010 20:53:06
|
pedroroxd
GUJ Master
![[Avatar]](/images/avatar/dd9206848200f155f3af5e05d724d75d.png)
Membro desde: 26/08/2009 14:56:11
Mensagens: 1615
Localização: Santa Rita do Sapucaí - O vale da Eletrônica
Offline
|
Porque ele recebe como parâmetro a imagem...
Depois ele edita 1 pixel da imagem, e passa a nova imagem para si mesmo...
Vou ver se faço pra editar todos os pixels em vez de ficar chamando a si mesmo..
|
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja Isso!
"Quem quer fazer, arranja um jeito. Quem não quer, uma desculpa."
'The dictionary is the only place that success comes before work!"
"Não diga à Deus que você tem um grande problema, diga ao problema que você tem um grande Deus."
"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple.
But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."
"O Brasil é um país geométrico. Tem problemas angulares, discutidos em mesas redondas, por um monte de bestas quadradas."
"Olho por olho, e o mundo acabará cego."
"Se falam pelas costas, é sinal que eu to na frente" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2010 21:09:50
|
pedroroxd
GUJ Master
![[Avatar]](/images/avatar/dd9206848200f155f3af5e05d724d75d.png)
Membro desde: 26/08/2009 14:56:11
Mensagens: 1615
Localização: Santa Rita do Sapucaí - O vale da Eletrônica
Offline
|
Ae! Consegui! Realmente não precisava ficar se chamando várias vezes.. Mandei criptografar um texto de 20.000 caracteres e deu certinho... O unico caractere que não sai é o um abre aspas, que quando eu coloko aki no guj vira interrogação... O " sai... Realmente, não percebesse nenhuma variação na imagem, só no primeiro pixel que é o RGB da quantidade de caracteres... no mais é tudo igualzinho.. Vlws ae vinigodoy, que me ajudou pra caramba mesmo, malz ae por ter enchido tanto o saco! kkkk =]
This message was edited 1 time. Last update was at 16/10/2010 22:59:26
|
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja Isso!
"Quem quer fazer, arranja um jeito. Quem não quer, uma desculpa."
'The dictionary is the only place that success comes before work!"
"Não diga à Deus que você tem um grande problema, diga ao problema que você tem um grande Deus."
"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple.
But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."
"O Brasil é um país geométrico. Tem problemas angulares, discutidos em mesas redondas, por um monte de bestas quadradas."
"Olho por olho, e o mundo acabará cego."
"Se falam pelas costas, é sinal que eu to na frente" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2010 23:22:08
|
pedroroxd
GUJ Master
![[Avatar]](/images/avatar/dd9206848200f155f3af5e05d724d75d.png)
Membro desde: 26/08/2009 14:56:11
Mensagens: 1615
Localização: Santa Rita do Sapucaí - O vale da Eletrônica
Offline
|
Ultima pergunta..
Agora que li com atenção seu post..
O que vc queria dizer com a compactação no texto?
|
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja Isso!
"Quem quer fazer, arranja um jeito. Quem não quer, uma desculpa."
'The dictionary is the only place that success comes before work!"
"Não diga à Deus que você tem um grande problema, diga ao problema que você tem um grande Deus."
"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple.
But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."
"O Brasil é um país geométrico. Tem problemas angulares, discutidos em mesas redondas, por um monte de bestas quadradas."
"Olho por olho, e o mundo acabará cego."
"Se falam pelas costas, é sinal que eu to na frente" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/10/2010 00:37:18
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Bom, acabei me empolgando e escrevi também meu algoritmo de esteganografia.
Em anexo, está o jar que faz o algoritmo rodar. E uma imagem, com a logo do GUJ.
Para estenografar:
java -jar Esteganografia.jar -e NomeDaImagem.png NomeDoArquivo1 NomeDoArquivo2 ...
Para reverter
java -jar Esteganografia.jar -r NomeDaImagem.png
Experimente rodar o programa para reverter os textos secretos que estão nessa logo.
Os textos saem na forma de arquivos. Então, não tentem só procurar uma frasezinha escrita no console.
Para quem pedeu, a explicação de como o processo funciona está aqui: http://www.guj.com.br/posts/list/221333.java#1132889
Entretanto, esse programa não usa o canal alfa. Uma otimização no PNG as vezes pré-multiplica o canal, o que o inviabiliza para o processo.
No lugar, uso 2 bits do canal vermelho, 1 do verde e 1 do azul para guardar meio byte, o que torna necessário usar 2 pixels para armazenar cada byte do que quero esconder.
| Nome do arquivo |
Esteganografia.jar |
Download
|
| Descrição |
Programa que faz a esteganografia |
| Tamanho |
9 Kbytes
|
| Baixado: |
187 vez(es) |
|
| Nome do arquivo |
logo.png |
Download
|
| Descrição |
Logo com textos escondidos |
| Tamanho |
7 Kbytes
|
| Baixado: |
167 vez(es) |
This message was edited 13 times. Last update was at 18/10/2010 08:09:07
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
|
|