Avatar billede nickl87 Nybegynder
01. juni 2007 - 14:05 Der er 5 kommentarer og
1 løsning

Kryptering i java?

Hej

Jeg står og skal bruge en måde at kryptere en mappe og de filer den indeholder.

Algoritmen til kryptering bliver nød til at være rimelig sikker, og da jeg ikke selv rigtig har så meget viden om kryptering tænkte jeg på om der var nogle af jer som kendte en nem måde at gøre dette på?

Har prøvet at google det, men synes det er lidt svært at overskue de forskellige krypterings algoritmer, såsom DES, AES osv.
Avatar billede arne_v Ekspert
01. juni 2007 - 15:18 #1
Hvis du krypterer alle filerne med AES er dine filer sikre, hvis "de" ikke
kan faa fat paa din key.

Java understoetter AES kryptering.

Leder du efter noget kode til AES kryptering eller ?
Avatar billede nickl87 Nybegynder
01. juni 2007 - 18:49 #2
Okay, der er også noget der hedder triple DES, er det bare en livsforlængende udgave af DES?

Jeg vil meget gerne se noget kode for hvordan man benytter AES, hvis muligt.
Avatar billede arne_v Ekspert
01. juni 2007 - 19:04 #3
3DES er ogsaa brugbar, men jeg vil alligevel anbefale AES

et simpelt eksempel:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

public class AES {
    private static void crypt(int mode, String fromname, String toname, String key) throws Exception {
        Cipher aes = Cipher.getInstance("AES");
        aes.init(mode, new SecretKeySpec(key.getBytes("UTF-8"), "AES"));
        InputStream is = new FileInputStream(fromname);
        OutputStream os = new FileOutputStream(toname);
        byte[] b = new byte[10000];
        int n;
        while((n = is.read(b)) >= 0) {
            byte[] b2;
            if(n < b.length) {
                b2 = aes.doFinal(b, 0, n);
            } else {
                b2 = aes.update(b, 0, n);
            }
            os.write(b2, 0, b2.length); 
            System.out.println(n + " " + b2.length);
        }
        is.close();
        os.close();
    }
    public static void encrypt(String fromname, String toname, String key) throws Exception {
        crypt(Cipher.ENCRYPT_MODE, fromname, toname, key);
    }
    public static void decrypt(String fromname, String toname, String key) throws Exception {
        crypt(Cipher.DECRYPT_MODE, fromname, toname, key);
    }
    public static void main(String[] args) throws Exception {
        encrypt("C:\\z.1", "C:\\z.2", "Top hemmelig key");
        decrypt("C:\\z.2", "C:\\z.3", "Top hemmelig key");
    }
}
Avatar billede nickl87 Nybegynder
04. juni 2007 - 10:08 #4
Tusind tak for hjælpen, er blevet noget klogere :)
Avatar billede arne_v Ekspert
04. juni 2007 - 17:18 #5
saa mider jeg et svar
Avatar billede arne_v Ekspert
21. juli 2007 - 15:52 #6
så mangler du bare at acceptere svaret
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester