AMETAS.cipher
Class RSA

java.lang.Object
  extended byAMETAS.cipher.Cipher
      extended byAMETAS.cipher.AsymmetricCipher
          extended byAMETAS.cipher.RSA

public class RSA
extends AsymmetricCipher

Der Verschlüsselungsalgorithmus RSA. Dieser Algorithmus realisiert ein asymmetrisches Verschlüsselungsverfahren mit einem öffentlichen und einem privaten Schlüssel.


Field Summary
 
Fields inherited from class AMETAS.cipher.Cipher
CBC, ECB, m_abCBCBuffer, m_bDebug
 
Constructor Summary
RSA()
          Konstruktor.
 
Method Summary
 int blocksize()
          Liefert die Blockgröße (in Bytes) von RSA.
 int blocksizeCipher()
          Liefert die Blockgrösse (in Bytes) von RSA.
 java.math.BigInteger decrypt(java.math.BigInteger biCipher)
          Entschlüsselt einen BigInteger.
 void decryptBlock(byte[] abyBlockCipher, int nOffsetCipher, byte[] abyBlockPlain, int nOffsetPlain)
          Entschlüsselt das Feld abyBlockCipher ab der Position nOffsetCipher für blocksizeCipher() viele Bytes und kopiert die entschlüsselten Bytes in das Feld abyBlockPlain an die Stelle nOffsetPlain.
 java.math.BigInteger encrypt(java.math.BigInteger biPlain)
          Verschlüsselt einen BigInteger.
 void encryptBlock(byte[] abyBlockPlain, int nOffsetPlain, byte[] abyBlockCipher, int nOffsetCipher)
          Verschlüsselt das Feld abyBlockPlain ab der Position nOffsetPlain für blocksize() viele Bytes und kopiert die verschlüsselten Bytes in das Feld abyBlockCipher an die Stelle nOffsetCipher.
 void setKey(java.security.Key rsaPublicKey)
          Setzt den öffentlichen Schlüssel.
 void setKeys(java.security.PrivateKey rsaPrivateKey, java.security.PublicKey rsaPublicKey)
          Setzt die Schlüssel.
 void setPrivateKey(java.security.PrivateKey rsaPrivateKey)
          Setzt den privaten Schlüssel.
 void setPrivateKey(java.security.PublicKey rsaPublicKey)
          Setzt den privaten Schlüssel.
 void setPublicKey(java.security.PrivateKey rsaPrivateKey)
          Setzt den öffentlichen Schlüssel.
 void setPublicKey(java.security.PublicKey rsaPublicKey)
          Setzen des öffentlichen Schlüssels.
 java.lang.String toString()
          Informationen über Algorithmus und Schlüssel.
 
Methods inherited from class AMETAS.cipher.AsymmetricCipher
getInstance, getInstance
 
Methods inherited from class AMETAS.cipher.Cipher
decrypt, decrypt, decrypt, decrypt, doBlockAdaptation, encrypt, encrypt, encrypt, encrypt, getAlgorithm, getCipherInstance, getCipherInstance, getMode, getNumberOfBytes, setDebug, setMode, undoAdaptation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

RSA

public RSA()
Konstruktor. Setzt den Namen des Algorithmus.

Method Detail

setKeys

public void setKeys(java.security.PrivateKey rsaPrivateKey,
                    java.security.PublicKey rsaPublicKey)
             throws java.security.InvalidKeyException
Setzt die Schlüssel.

Specified by:
setKeys in class AsymmetricCipher
Parameters:
rsaPrivateKey - Privater Schlüssel vom Typ RSAPrivateKey.
rsaPublicKey - Öffentlicher Schlüssel vom Typ RSAPublicKey.
Throws:
java.security.InvalidKeyException - falls die Schlüssel vom falschen Typ sind oder die die Bitlänge der Schlüssels nicht durch 8 teilbar ist.

setKey

public void setKey(java.security.Key rsaPublicKey)
            throws java.security.InvalidKeyException
Setzt den öffentlichen Schlüssel.

Specified by:
setKey in class Cipher
Parameters:
rsaPublicKey - Öffentlicher Schlüssel vom Typ RSAPublicKey.
Throws:
java.security.InvalidKeyException - falls der Schlüssel kein RSAPublicKey ist oder die Bitlänge nicht durch 8 teilbar ist.

setPublicKey

public void setPublicKey(java.security.PublicKey rsaPublicKey)
                  throws java.security.InvalidKeyException
Setzen des öffentlichen Schlüssels.

Specified by:
setPublicKey in class AsymmetricCipher
Parameters:
rsaPublicKey - Öffentlicher Schlüssel vom Typ RSAPublicKey.
Throws:
java.security.InvalidKeyException - falls der Schlüssel kein RSAPublicKey ist oder die Bitlänge nicht durch 8 teilbar ist.

setPublicKey

public void setPublicKey(java.security.PrivateKey rsaPrivateKey)
                  throws java.security.InvalidKeyException
Setzt den öffentlichen Schlüssel. Da bei RSA sowohl mit dem privaten als auch dem öffentlichen Schlüssel ver- bzw. entschlüsselt werden kann, kann auch der private Schlüssel zum Verschlüsseln benutzt werden (wird für Signaturen gebraucht).

Parameters:
rsaPrivateKey - Schlüssel vom Typ RSAPrivateKey zum Verschlüsseln.
Throws:
java.security.InvalidKeyException - falls der Schlüssel kein RSAPrivateKey ist oder die Bitlänge nicht durch 8 teilbar ist.

setPrivateKey

public void setPrivateKey(java.security.PublicKey rsaPublicKey)
                   throws java.security.InvalidKeyException
Setzt den privaten Schlüssel. Da bei RSA sowohl mit dem privaten als auch dem öffentlichen Schlüssel ver- bzw. entschlüsselt werden kann, kann auch der öffentliche Schlüssel zum Entschlüsseln benutzt werden (wird für Signaturen gebraucht).

Parameters:
rsaPublicKey - Schlüssel vom Typ RSAPublicKey zum Verschlüsseln.
Throws:
java.security.InvalidKeyException - falls die Schlüssel kein RSAPublicKey ist oder die Bitlänge nicht durch 8 teilbar ist.

setPrivateKey

public void setPrivateKey(java.security.PrivateKey rsaPrivateKey)
                   throws java.security.InvalidKeyException
Setzt den privaten Schlüssel.

Specified by:
setPrivateKey in class AsymmetricCipher
Parameters:
rsaPrivateKey - Privater Schlüssel vom Typ RSAPrivateKey.
Throws:
java.security.InvalidKeyException - wird geworfen, falls der Schlüssel kein RSAPrivateKey ist.

toString

public java.lang.String toString()
Informationen über Algorithmus und Schlüssel.

Returns:
Stringrepräsentation.

encrypt

public java.math.BigInteger encrypt(java.math.BigInteger biPlain)
                             throws CipherException
Verschlüsselt einen BigInteger.

Specified by:
encrypt in class AsymmetricCipher
Parameters:
biPlain - Unverschlüsselte Wert.
Returns:
Verschlüsselter Wert.
Throws:
CipherException - wenn der Schlüssel zur Verschlüsselung fehlt oder die Bitlänge falsch ist.

decrypt

public java.math.BigInteger decrypt(java.math.BigInteger biCipher)
                             throws CipherException
Entschlüsselt einen BigInteger.

Specified by:
decrypt in class AsymmetricCipher
Parameters:
biCipher - Verschlüsselter Wert.
Returns:
Entschlüsselter Wert.
Throws:
CipherException - wenn der Schlüssel zur Entschlüsselung fehlt oder die Bitlänge falsch ist.

blocksize

public int blocksize()
Liefert die Blockgröße (in Bytes) von RSA. Diese richtet sich nach der Größe der Schlüssel (genauer: des Modulus). Die Angabe bezieht sich auf die Blockgröße unverschlüsselter Daten. Diese ist um eins geringer als die Blockgröße der verschlüsselten Daten.

Specified by:
blocksize in class Cipher
Returns:
Blockgröße des Verschlüsselungsalgorithmus.

blocksizeCipher

public int blocksizeCipher()
Liefert die Blockgrösse (in Bytes) von RSA. Diese richtet sich nach der Größe der Schlüssel (genauer: des Modulus). Die Angabe bezieht sich auf die Blockgröße verschlüsselter Daten.

Specified by:
blocksizeCipher in class Cipher
Returns:
Blockgrösse des Verschlüsselungsalgorithmus

encryptBlock

public void encryptBlock(byte[] abyBlockPlain,
                         int nOffsetPlain,
                         byte[] abyBlockCipher,
                         int nOffsetCipher)
                  throws CipherException
Verschlüsselt das Feld abyBlockPlain ab der Position nOffsetPlain für blocksize() viele Bytes und kopiert die verschlüsselten Bytes in das Feld abyBlockCipher an die Stelle nOffsetCipher. Achtung: Der Platz, der in dem CipherArray für die Daten gebraucht wird beträgt blocksizeCipher().

Specified by:
encryptBlock in class Cipher
Parameters:
abyBlockPlain - Zu verschlüsselndes Bytefeld.
nOffsetPlain - Position, ab der die Verschlüsselung beginnen soll.
abyBlockCipher - Feld, in das der verschlüsselte Block kopiert werden soll.
nOffsetCipher - Position im Feld, wohin der verschlüsselte Block kopiert werden soll.
Throws:
CipherException - wenn ein Verschlüsselungsproblem auftrat. Dies kann beim z.B. beim Fehlen eines Schlüssels oder bei einem falschen Datenformat geschehen.

decryptBlock

public void decryptBlock(byte[] abyBlockCipher,
                         int nOffsetCipher,
                         byte[] abyBlockPlain,
                         int nOffsetPlain)
                  throws CipherException
Entschlüsselt das Feld abyBlockCipher ab der Position nOffsetCipher für blocksizeCipher() viele Bytes und kopiert die entschlüsselten Bytes in das Feld abyBlockPlain an die Stelle nOffsetPlain. Der Platz, der in dem Zielfeld für die Daten gebraucht wird, beträgt blocksize().

Specified by:
decryptBlock in class Cipher
Parameters:
abyBlockCipher - Zu entschlüsselndes Bytefeld.
nOffsetCipher - Position, ab der die Entschlüsselung beginnen soll.
abyBlockPlain - Feld, in das der entschlüsselte Block kopiert werden soll.
nOffsetPlain - Position im Feld, wohin der entschlüsselte Block kopiert werden soll.
Throws:
CipherException - wenn ein Entschlüsselungsproblem auftrat. Dies kann beim z.B. beim Fehlen eines Schlüssels oder bei einem falschen Datenformat geschehen.