hallo
ich habe mir eine Klasse geschrieben, mit welcher ich Dateien verschlüsseln und Natürlich auch entschlüsselt möchte. Dazu verwende ich cypher.
Das ganze funktioniert eigentlich auch, nur gewisse Zeichen werden nicht richtig entschlüsselt.
Dazu gehören (glaube ich) nur ANSII Zeichen, und keine ASCII
Meiner Ansicht nach passiert dies erst wenn ich die Bytes in einen String packe. Denn als ich nur es nicht zuerst in eine Datei geschrieben habe, hat es tiptop geklappt.
Als ich es aber zuerst in einen String gepackt hab, dann wieder die bytes genommen und diese entschlüsselt, kam ein Fehler.
die Klasse:
Aufrufen tu ich sie so:
Wo könnte das Problem liegen, hat jemand eine Idee?
Und wenn String das Problem ist, wie kann ich es umgehen?
Danke und Gruss
ich habe mir eine Klasse geschrieben, mit welcher ich Dateien verschlüsseln und Natürlich auch entschlüsselt möchte. Dazu verwende ich cypher.
Das ganze funktioniert eigentlich auch, nur gewisse Zeichen werden nicht richtig entschlüsselt.
Dazu gehören (glaube ich) nur ANSII Zeichen, und keine ASCII
Meiner Ansicht nach passiert dies erst wenn ich die Bytes in einen String packe. Denn als ich nur es nicht zuerst in eine Datei geschrieben habe, hat es tiptop geklappt.
Als ich es aber zuerst in einen String gepackt hab, dann wieder die bytes genommen und diese entschlüsselt, kam ein Fehler.
die Klasse:
Code:
/*
* Created on 17.02.2006
*
*/
package server.base;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
public class Crypter2 {
private Key key;
private static Crypter2 crypter = new Crypter2();
private Crypter2(){
try {
KeyGenerator keyGen = KeyGenerator.getInstance("DES");
key = keyGen.generateKey();
}
catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
public static Crypter2 getInstance(){
return crypter;
}
public void encrypt(File sourceFile, File encryptedFile){
try {
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
FileReader reader = new FileReader(sourceFile);
CipherOutputStream COS = new CipherOutputStream(new FileOutputStream(encryptedFile), cipher);
int numChar;
char[] buffer = new char[10];
while ((numChar = reader.read(buffer)) != -1) {
String enc = new String(buffer);
System.out.println("encrypt: " + enc);
COS.write(new String(buffer).getBytes());
}
reader.close();
COS.flush();
COS.close();
}
catch (NoSuchAlgorithmException e1) {
e1.printStackTrace();
}
catch (NoSuchPaddingException e1) {
e1.printStackTrace();
}
catch (InvalidKeyException e1) {
e1.printStackTrace();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
public void decrypt(File encryptedFile, File decryptedFile){
try {
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, key);
FileWriter writer = new FileWriter(decryptedFile);
CipherInputStream CIS = new CipherInputStream(new FileInputStream(encryptedFile), cipher);
byte[] buffer = new byte[1];
int k;
while ((k = CIS.read(buffer)) != -1) {
System.out.print(new String(buffer));
writer.write(new String(buffer));
}
writer.flush();
writer.close();
CIS.close();
}
catch (NoSuchAlgorithmException e1) {
e1.printStackTrace();
}
catch (NoSuchPaddingException e1) {
e1.printStackTrace();
}
catch (InvalidKeyException e1) {
e1.printStackTrace();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
Aufrufen tu ich sie so:
Code:
File sourceFile = new File("C:\\Documents and Settings\\unp01011\\Desktop\\abb.ppt");
File encryptedFile = new File("C:\\Documents and Settings\\unp01011\\Desktop\\abb_encryp.ppt");
File decryptedFile = new File("C:\\Documents and Settings\\unp01011\\Desktop\\abb_decryp.ppt");
Crypter2.getInstance().encrypt(sourceFile, encryptedFile);
Crypter2.getInstance().decrypt(encryptedFile, decryptedFile);
System.out.println("");
System.out.println("finished");
Wo könnte das Problem liegen, hat jemand eine Idee?
Und wenn String das Problem ist, wie kann ich es umgehen?
Danke und Gruss