2013-07-25 3 views
-1

У меня возникла проблема с сериализацией объекта cipherinputstream. Я всегда получаю это исключение всякий раз, когда я пытаюсь сделать это, вот фрагмент моего кодаКак сериализовать и десериализовать объект CipherInputStream

public class Crypto implements java.io.Serializable 
{ 

public Crypto(String filename) 
{ 

Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING"); 
SecretKeySpec secretkey = new SecretKeySpec(key(), "AES"); 
cipher.init(Cipher.ENCRYPT_MODE, secretkey); 
CipherInputStream cipt = new CipherInputStream(new FileInputStream(new File(filename)), cipher) 

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

    ObjectOutputStream obj = null; 

      try 
      { 
       obj = new ObjectOutputStream(baos); 
       obj.writeObject(cipt); 
       byte[] bv = baos.toByteArray(); 
       System.out.println(bv); 

      } 
      catch(Exception b) 
      { 
      b.printStackTrace(); 
      } 
      finally 
      { 
      obj.close(); 
      baos.close(); 
      } 
     } 
    } 

Исключение:

java.io.NotSerializableException: javax.crypto.CipherInputStream. 
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180) 

Может кто-нибудь помочь мне сделать это. Моя цель - преобразовать объект cipherinputstream в байты или bytearrays.

+0

Был ли U реализован сериализуемым? –

+0

Чего вы хотите достичь? Вы хотите написать сам шифр или действительно объект 'CipherInputStream'? –

+0

объект CipherInputStream –

ответ

-1

Вероятно, U не реализовал бы сериализованный класс маркеров. Предположим, что класс A является номером U, который необходимо сериализовать, а затем:

class A implements serializable { 

    //class variables and methods 


} 
+0

Я только что отредактировал код, по-прежнему имею ту же ошибку –