Estou tendo problemas para criptografar um arquivo de texto
Estou utilizando o código abaixo, só que quando eu leio uma linha com muitos caractereres
por exemplo:
Entrada.txt
Saida.txt
ao descriptografar o arquivo Saida.txt, obtenho o seguinte resultado:
O código que eu estou utilizando para criptografar/descriptografar é o seguinte:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.crypto.*;
import javax.crypto.spec.*;
public final class BlowFish
{
private static String passfrase="StV3%45rtxsadeg";
public static final String cript(String str)
{
String strCript = str;
try
{
Cipher ch = Cipher.getInstance("Blowfish");
SecretKey k1 = new SecretKeySpec(passfrase.getBytes(), "Blowfish");
//criptografando
ch.init( Cipher.ENCRYPT_MODE, k1);
byte b[] = ch.doFinal(strCript.getBytes());
String s1 = Conversion.byteArrayToBase64String(b);
strCript = s1;
}
catch( Exception e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
return strCript;
}
public static final String decript(String str)
{
String strDecript = str;
try
{
Cipher ch = Cipher.getInstance("Blowfish");
SecretKey k1 = new SecretKeySpec(passfrase.getBytes(), "Blowfish");
//decriptografando
ch.init( Cipher.DECRYPT_MODE, k1);
byte b[] = Conversion.base64StringToByteArray(strDecript);
byte b1[] = ch.doFinal(b);
String s1 = new String(b1);
strDecript = s1;
}
catch( Exception e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
return strDecript;
}
static public void main(String[] args) throws IOException
{
String cript;
FileReader reader = new FileReader(args[0]);
FileWriter writer = new FileWriter(args[1]);
PrintWriter saida = new PrintWriter(writer);
BufferedReader leitor = new BufferedReader(reader);
String linha = null;
try {
while((linha = leitor.readLine()) != null) {
/*
// DESCRIPTOGRAFAR
// System.out.println("Linha: " + linha);
if (!linha.equals(""))
cript = BlowFish.decript(linha);
saida.println(cript);
}*/
// CRIPTOGRAFAR
// System.out.println("Linha: " + linha);
cript = BlowFish.cript(linha);
saida.println(cript);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
saida.close();
writer.close();
leitor.close();
reader.close();
}
}
Eu acredito que ele tem algum limite da quantidade de caracteres, alguém sabe como resolver esse problema?
Pelas minhas contas ele tem problema quando na linha constam mais de 47 caracteres, no exemplo ali as 2 linhas que tiveram erro:
D:/Músicas/Downloads/MP3/Colbie Caillat - Bubbly.mp3
D:/Músicas/MP3 - Rodrigo/01_Lo Facil Cae Ligero.mp3
possuem mais de 47 caracteres.
para executar eu faço: cript.exe entrada.txt saida.txt ou decript.exe entrada.txt saida.txt
Espero que possam me ajudar rsrsrs não entendo muito de Java, muito menos de criptografia…