Verschlüsselung mit Cipher

Status
Nicht offen für weitere Antworten.

SammY

Bekanntes Mitglied
Leider schon wieder ein Problem:

Folgendes, hier erst mal der Code:
Code:
    Cipher c = Cipher.getInstance( "DES" );
    Key k = new SecretKeySpec( "01234567".getBytes(), "DES" );
    c.init( Cipher.ENCRYPT_MODE, k );
    OutputStream out = new FileOutputStream( "C:/t.des" );
    CipherOutputStream cos = new CipherOutputStream( out, c );
    cos.write( "Das wird anders werden".getBytes() );
    cos.close();
    
    Cipher c1 = Cipher.getInstance("DES");
    Key k1 = new SecretKeySpec( "01234567".getBytes(), "DES" );
    c1.init(Cipher.DECRYPT_MODE, k1);
    InputStream in = new FileInputStream( "C:/t.des" );
    CipherInputStream cis = new CipherInputStream( in, c1 );
    int len;
    
    byte[] buf = new byte[100];

    cis.read(buf);

    for(int i = 0; i < buf.length; i++){
    	System.out.print((char)buf[i]);
    }
    cis.close();

Ausgabe:
Das wird anders

FEHLER:
Wo ist das letzte Wort. Warum schneidet er das weg??

Hoffentlich wisst ihr es.

danke.
 
:/ hm....ich bin mir nicht sicher aber versuch mal n flush vorm close...aber ob es was bringt weiß ich net, kenn mich selbst net aus ^^
 
Versuch's mal so:
Code:
...
        cos.write( getBytes("Das wird anders werden") );
...
    private byte[] getBytes(final String string) {
        StringBuffer buf = new StringBuffer();
        for (int i = string.length(); i%8 != 0; i++)
            buf.append(" ");
        return (string + buf.toString()).getBytes();
    }
 
Wahnsinn es funktioniert.
Kannst du mit bitte erklären warum??
Will es nicht so einfach hin nehmen das es funzt, will auch wissen
warum das so ist.
 
SammY hat gesagt.:
Wahnsinn es funktioniert.
Kannst du mit bitte erklären warum?..
Cipher operiert auf Datenblöcken. Man muss sicherstellen, daß die Datenlänge ein Blockvielfaches ist (padding schemes).
“getBytes(final String string)” stellt sicher, dass die Eingabe ein Vielfaches von 8 Bytes ist.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben