Class SrpTelegramEncryption
Jeder Kommunikationspartner sollte eine Instanz dieser Klasse (pro Verbindung) erzeugen und kann dann mit encrypt(byte[])
Daten vor dem
Versand verschlüsseln und mit decrypt(byte[])
empfangene Daten entschlüsseln.
Es ist wichtig, dass die Reihenfolge der Telegramme beibehalten wird und kein Telegramm ausgelassen wird, da die GCM-Noncen durch einen einfachen Zähler realisiert werden, der auf beiden Seiten der Verbindung denselben Wert annehmen muss.
Diese Klasse ist nur eingeschränkt threadsafe, es dürfen nicht mehrere Verschlüsselungen oder Entschlüsselungen gleichzeitig durchgeführt werden, was allerdings sowieso verboten ist, da es eine fest definierte Telegramm-Reihenfolge geben muss. Es ist kein Problem, parallel eine Verschlüsselung und eine Entschlüsselung durchzuführen.
-
Constructor Summary
ConstructorsConstructorDescriptionSrpTelegramEncryption
(byte[] sessionKey, boolean isClient, SrpCryptoParameter srpCryptoParameter) Erstellt eine neue SrpTelegramEncryption-Instanz für eine Verbindung. -
Method Summary
Modifier and TypeMethodDescriptionstatic byte[]
computeHash
(int outputMinimumSize, String hashAlgorithm, byte[] data) Berechnet einen Hashwert der angegebenen Länge aus den übergebenen Datenbyte[]
decrypt
(byte[] telegram) Entschlüsselt ein Telegramm von der Gegenseitebyte[]
encrypt
(byte[] telegram) Verschlüsselt ein Telegramm zum Versand an die GegenseiteGibt den Namen der verwendeten Verschlüsselung zurückstatic void
increment
(byte[] bytes) Inkrementiert ein Byte-Array wie einen Integer.
-
Constructor Details
-
SrpTelegramEncryption
public SrpTelegramEncryption(byte[] sessionKey, boolean isClient, SrpCryptoParameter srpCryptoParameter) throws SrpNotSupportedException Erstellt eine neue SrpTelegramEncryption-Instanz für eine Verbindung. Der AES-Key wird aus dem Sitzungsschlüssel bestimmt.- Parameters:
sessionKey
- Sitzungsschlüssel (z.B. aus SRP-Authentifizierung)isClient
- Handelt es sich hierbei um den Client?srpCryptoParameter
- Cryptographische Verschlüsselungsparameter- Throws:
SrpNotSupportedException
-
-
Method Details
-
increment
public static void increment(byte[] bytes) Inkrementiert ein Byte-Array wie einen Integer. Der erste Wert den Arrays ist am signifikantesten.- Parameters:
bytes
- Byte-Array
-
computeHash
public static byte[] computeHash(int outputMinimumSize, String hashAlgorithm, byte[] data) throws NoSuchAlgorithmException, DigestException Berechnet einen Hashwert der angegebenen Länge aus den übergebenen Daten- Parameters:
outputMinimumSize
- Mindestlänge in Bytes des Ergebniswerts. Das zurückgegebene Array kann größer sein, aber nicht kleiner.hashAlgorithm
- Algorithmus zum Hashendata
- Byte-Array, das zu hashende Daten enthält. Leere Arrays sind nicht zulässig.- Returns:
- Byte-Array mit Hashwerten
- Throws:
NoSuchAlgorithmException
- Der Algorithmus existiert nichtDigestException
- Fehler beim Hashwert berechnen
-
encrypt
Verschlüsselt ein Telegramm zum Versand an die Gegenseite- Parameters:
telegram
- Telegramm- Returns:
- Verschlüsselte Daten
- Throws:
IOException
- Fehler beim Verschlüsseln
-
decrypt
Entschlüsselt ein Telegramm von der Gegenseite- Parameters:
telegram
- Verschlüsselte Daten- Returns:
- Entschlüsseltes Telegramm
- Throws:
IOException
- Fehler beim Entschlüsseln
-
getCipherName
Gibt den Namen der verwendeten Verschlüsselung zurück- Returns:
- Name der Verschlüsselung
-