AMETAS.cipher
Class CipherInputStream

java.lang.Object
  extended byjava.io.InputStream
      extended byAMETAS.cipher.CipherInputStream

public class CipherInputStream
extends java.io.InputStream

Strom zur Ver- und Entschlüsselung beim Einlesen. In der Regel wird dieser Strom im Entschlüsselungsmodus verwendet, um eintreffende Daten zu entschlüsseln. Dieser Datenstrom kann einfach in eine Stromkette zwischengeschaltet werden und auch außerhalb AMETAS Einsatz finden.

Beispiel:

                symCipher = SymmetricCipher.getInstance("AMETASSC");
                symCipher.setKey(sMantra);
                ois = new ObjectInputStream(new CipherInputStream(cryptedInputStream, symCipher));
        


Field Summary
static int DECRYPTION_MODE
          Entschlüsselungsmodus.
static int ENCRYPTION_MODE
          Verschlüsselungsmodus.
protected  byte[] m_abyBuffer
          Puffer, der zur Speicherung von ver- oder entschlüsselten Daten dient.
protected  byte[] m_abyEncryptionBuffer
          Puffer für die Verschlüsselung.
 boolean m_bDebug
          Wenn true, werden Detailmeldungen ausgegeben.
protected  Cipher m_CipherAlg
          Instanz eines symmetrischen Verschlüsselungsalgorithmus.
protected  int m_nBufferPointer
          Zeiger auf die Stelle im Puffer.
protected  int m_nMode
          Modus.
static int NEUTRAL_MODE
          Neutraler Modus.
 
Constructor Summary
CipherInputStream(java.io.InputStream isIn, Cipher cipher)
          Konstruktor.
CipherInputStream(java.io.InputStream isIn, Cipher cipher, int nMode)
          Konstruktor.
 
Method Summary
 int available()
          Liefert die Anzahl der Bytes, die ohne Blockierung aus dem Strom gelesen werden können.
 void close()
          Schließt den Strom.
 void mark(int readlimit)
          Setzt eine Marke.
 boolean markSupported()
          Gibt an, ob dieser Strom Marken unterstützt.
 int read()
          Liefert ein Byte aus dem Strom.
 int read(byte[] b)
          Liest maximal b.length viele Bytes in das Feld.
 int read(byte[] b, int off, int len)
          Liest maximal len viele Bytes in das Feld ab der Position off.
 void reset()
          Führt einen Reset auf dem InputStream aus.
 long skip(long lSkipBytes)
          Überspringt maximal lSkipBytes Bytes.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_CipherAlg

protected Cipher m_CipherAlg
Instanz eines symmetrischen Verschlüsselungsalgorithmus. Bei der Ver-/Entschlüsselung benutzt der Stream diesen Algorithmus.


m_abyBuffer

protected byte[] m_abyBuffer
Puffer, der zur Speicherung von ver- oder entschlüsselten Daten dient. Dieser Puffer ist so groß wie die Blockgröße des Verschlüsselungsalgorithmus.


ENCRYPTION_MODE

public static final int ENCRYPTION_MODE
Verschlüsselungsmodus.

See Also:
Constant Field Values

DECRYPTION_MODE

public static final int DECRYPTION_MODE
Entschlüsselungsmodus.

See Also:
Constant Field Values

NEUTRAL_MODE

public static final int NEUTRAL_MODE
Neutraler Modus. Es findet weder Ver- noch Entschlüsselung statt. Das Verhalten ist wie bei einem normalen InputStream.

See Also:
Constant Field Values

m_nMode

protected int m_nMode
Modus. Kann folgende Werte annehmen: ENCRYPTIONMODE, DECRYPTIONMODE, NEUTRALMODE.


m_nBufferPointer

protected int m_nBufferPointer
Zeiger auf die Stelle im Puffer.


m_abyEncryptionBuffer

protected byte[] m_abyEncryptionBuffer
Puffer für die Verschlüsselung.


m_bDebug

public boolean m_bDebug
Wenn true, werden Detailmeldungen ausgegeben.

Constructor Detail

CipherInputStream

public CipherInputStream(java.io.InputStream isIn,
                         Cipher cipher)
                  throws java.io.IOException
Konstruktor. Dieser Strom hat die Funktionalität eines InputStreams und ist genauso zu verwenden. Der Strom wird mit dem Parameter DECRYPTION_MODE initialisiert.

Parameters:
isIn - Eigentlicher InputStream, mit dem gearbeitet wird.
cipher - Symmetrischer Verschlüsselungsalgorithmus.
Throws:
java.io.IOException - bei Lesefehlern im unterliegenden Strom oder Ver-/Entschlüsselungsproblemen.

CipherInputStream

public CipherInputStream(java.io.InputStream isIn,
                         Cipher cipher,
                         int nMode)
                  throws java.io.IOException
Konstruktor. Dieser Strom hat die Funktionalität eines InputStreams und ist genauso zu verwenden.

Parameters:
isIn - Eigentlicher InputStream, mit dem gearbeitet wird.
cipher - Symmetrischer Verschlüsselungsalgorithmus.
nMode - Modus, der folgende Werte annehmen darf: ENCRYPTION_MODE, DECRYPTION_MODE oder NEUTRAL_MODE.
Throws:
java.io.IOException - bei Lesefehlern im unterliegenden Strom oder Ver-/Entschlüsselungsproblemen.
Method Detail

read

public int read()
         throws java.io.IOException
Liefert ein Byte aus dem Strom.

Returns:
Nächstes Byte (als Integer).
Throws:
java.io.IOException - bei Leseproblemen oder Ver-/Entschlüsselungsproblemen.

read

public int read(byte[] b)
         throws java.io.IOException
Liest maximal b.length viele Bytes in das Feld.

Returns:
int Anzahl der gelesenen Bytes oder -1, wenn keine weiteren Bytes vorliegen.
Throws:
java.io.IOException - bei Leseproblemen oder Ver-/Entschlüsselungsproblemen.

read

public int read(byte[] b,
                int off,
                int len)
         throws java.io.IOException
Liest maximal len viele Bytes in das Feld ab der Position off.

Returns:
Anzahl der gelesenen Bytes oder -1, wenn keine weiteren Bytes vorliegen
Throws:
java.io.IOException - bei Leseproblemen oder Ver-/Entschlüsselungsproblemen.

skip

public long skip(long lSkipBytes)
          throws java.io.IOException
Überspringt maximal lSkipBytes Bytes.

Returns:
Anzahl der übersprungenen Bytes.
Throws:
java.io.IOException - bei Leseproblemen oder Ver-/Entschlüsselungsproblemen.

available

public int available()
              throws java.io.IOException
Liefert die Anzahl der Bytes, die ohne Blockierung aus dem Strom gelesen werden können.

Returns:
Anzahl der Bytes, die ohne Blockierung gelesen werden können.
Throws:
java.io.IOException - bei Leseproblemen oder Ver-/Entschlüsselungsproblemen.

close

public void close()
           throws java.io.IOException
Schließt den Strom.

Throws:
java.io.IOException - wenn das Schließen des Original-Stroms zu einem Fehler führte.

mark

public void mark(int readlimit)
Setzt eine Marke. Dieser Strom unterstützt keine Marken, also geschieht keine Aktion.


reset

public void reset()
           throws java.io.IOException
Führt einen Reset auf dem InputStream aus.

Throws:
java.io.IOException - wenn das Rücksetzen des Original-Stroms zu einem Fehler führte.

markSupported

public boolean markSupported()
Gibt an, ob dieser Strom Marken unterstützt.

Returns:
false, da Marken nicht unterstützt werden.