Avatar billede kc230877 Nybegynder
11. november 2005 - 11:02 Der er 3 kommentarer og
1 løsning

(De)kryptering af tekst-filer med Sun's JCE

Jeg har brug for et eksempel på hvordan man krypterer og dekrypterer flade tekstfiler med Sun's egen krypterings-package JCE.

Tekstfilerne skal indlæse med java.io.BufferedReader efter de er dekrypteret. Er det muligt?

JCE kan hentes her:
http://java.sun.com/developer/technicalArticles/Security/AES/AES_v1.html
Avatar billede arne_v Ekspert
11. november 2005 - 14:51 #1
eksempel:

package november;

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 arne_v Ekspert
11. november 2005 - 14:52 #2
kryptering kører på bytes derfor bruger jeg binær IO ikke tekst IO

(du kan læse linier ind i en String, konvertere den til et byte array og
så kryptere men jeg kunne ikke se noget formål)
Avatar billede kc230877 Nybegynder
11. november 2005 - 15:04 #3
Perfekt - det virker!

Smid et svar og god weekend.

/Kenneth
Avatar billede arne_v Ekspert
11. november 2005 - 15:05 #4
kommer her
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