Cipher

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
Weiß jemand wie ich den Folgenden Fehler des unteren Codes beheben kann?

Code:
Exception in thread "main" java.security.NoSuchAlgorithmException: Cannot find any provider supporting DES/CBC/PKCS5Padding
        at javax.crypto.Cipher.getInstance(DashoA13*..)
        at com.tutego.security.crypto.ReadWriteDES.encode(ReadWriteDES.java:14)
        at com.tutego.security.crypto.ReadWriteDES.main(ReadWriteDES.java:47)
Java Result: 1




Code:
package com.tutego.security.crypto;

import java.io.*;
import java.security.Key;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.*;


public class ReadWriteDES
{
  static void encode( byte[] bytes, OutputStream out, String pass ) throws Exception
  {
    Cipher c = Cipher.getInstance( "DES/CBC/PKCS5Padding" );
    Key k = new SecretKeySpec( pass.getBytes(), "DES/CBC/PKCS5Padding");
    c.init( Cipher.ENCRYPT_MODE, k );

    OutputStream cos = new CipherOutputStream( out, c );
    cos.write( bytes );
    cos.close();
  }

  static byte[] decode( InputStream is, String pass ) throws Exception
  {
    Cipher c = Cipher.getInstance( "DES/CBC/PKCS5Padding");
    Key k = new SecretKeySpec( pass.getBytes(), "DES/CBC/PKCS5Padding" );
    c.init( Cipher.DECRYPT_MODE, k );

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    CipherInputStream cis = new CipherInputStream( is, c );

    int b = 0;
    while((b = cis.read()) != -1) {
         bos.write( b );
        }

    cis.close();
    return bos.toByteArray();
  }

  public static void main( String[] args ) throws Exception
  {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    encode( "Das wird anders werden".getBytes(), out, "01234567" );

    String s = new BASE64Encoder().encode( out.toByteArray() );
    System.out.println( s );  // qJYN+8Hd5dXsgMl1akQnw4iCbRN3EUbK

    byte[] decode = new BASE64Decoder().decodeBuffer( s );
    InputStream is = new ByteArrayInputStream( decode );
    System.out.println( new String( decode( is, "01234567" ) ) );
  }
}
 

HoaX

Top Contributor
also mein java1.6.0_10 kanns ohne probleme. dir fehlt wohl der passende provider.

welche javaversion verwendest du? 1.4 ohne jce?
 

MQue

Top Contributor
kann ich eigentlich irgendwie feststellen, ob eine Datei verschlüsselt ist (mit dem CipherReader/Writer) oder ob es sich um eine "normale" XML- Datei handelt?
 

Landei

Top Contributor
Meinst du das ernst?

Eine unverschlüsselte XML-Datei sollte normalerweise mit <?xml anfangen.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben