Conversão para bits

7 respostas
Fernando_Vicente

Preciso pegar um arquivo texto e tranformar ele em bits e somar esses bits com uma chave do tipo texto gerando um arquivo ciptografado.

Ex: Bom Dia (texto) + java (chave) = xxxxxxxx (arquivo criptografado)

Tenho que somar cada caracter, sendo que qdo terminar o caracter da chave, volta ao primeiro caratcer para continuar o processo até terminar os caracteres do texto.

7 Respostas

Dieval_Guizelini

Isso deve resolver para você:

http://java.sun.com/j2se/1.4.2/docs/guide/security/jce/JCERefGuide.html

fw

Ops: depois que eu vi que você não criar uma criptografia mesmo… segue uma proposta de solução… ela pode ser melhorada.

public static String geraChave(String texto,String chave) { char[] orig = texto.toCharArray(); char[] chav = chave.toCharArray(); char[] resultado = new char[orig.length]; int posChave = 0; for(int i=0 ; i<orig.length ; i++) { resultado[i] = (char)(orig[i]+chav[posChave]); posChave++; if( posChave == chav.length ) { posChave = 0; } } return new String(resultado); }

sergiotaborda

Fernando Vicente:
Preciso pegar um arquivo texto e tranformar ele em bits e somar esses bits com uma chave do tipo texto gerando um arquivo ciptografado.

Ex: Bom Dia (texto) + java (chave) = xxxxxxxx (arquivo criptografado)

Tenho que somar cada caracter, sendo que qdo terminar o caracter da chave, volta ao primeiro caratcer para continuar o processo até terminar os caracteres do texto.

Somar bits ou bytes ?
Vc pode ler um array de byte que é seu texto e um outro que é sua chave e fazer essa soma ai…
A classe String tem o método getBytesArray()

Dieval_Guizelini

hehe

eu interpretei que eram para somar os “chars” na realidade, uma vez que a entrada é String, mas poderia ser convertido para bytes…

fw

Fernando_Vicente

Qual é a função inversa deste codigo:

public String[] chaveInversa = new String[8];
chaveInversa[i] = Integer.toBinaryString((int) chave.charAt(i));

Eu transformei um caracter em binario e passei para um vetor de String. Agora preciso pegar uma posição desse vetor e voltar para caracter.

GustavoLaguna

Na Classe Integer voce tem métodos para transformar string binarias em inteiros na base decimal.

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Integer.html

F

Boa noite!

Estou disponibilizando um código que transforma uma string em uma string de bits. Faço isso convertendo cada char da string original para o valor em binário deste char e somando add em uma string.

String binario = "", palavra; entrada = new Scanner(System.in); palavra = entrada.next(); for (int x = 0; x < palavra.length(); x++) binario = binario.concat(Integer.toBinaryString(palavra.charAt(x))); System.out.println(binario);

Espero que ajude!

Abraço,

ViniGodoy

Tem vários problemas no seu código, Frederico:

  1. Para concatenar Strings, use o StringBuilder, não o método concat.
  2. Você não gera uma sequencia de bits. Você gera uma nova String, contendo os caracteres ‘0’ e ‘1’, correspondente aos bits. Na verdade, sua nova String é 8 vezes maior que a original, e não pode ser trabalhada de forma numérica de maneira eficiente, como o colega do tópico original gostaria.
  3. Você está usando next() e não nextLine() para ler do console. Isso deixa lixo no scanner, pois o \n pode não ser retirado do buffer;

A forma que o Dieval postou já estava correta, embora para criptografia, geralmente usemos o % e não o +, como propôs o autor do tópico.

Criado 25 de abril de 2008
Ultima resposta 28 de nov. de 2011
Respostas 7
Participantes 6