IEEE 802.15.4 - Daten mit AES-ECB verschlüsseln
Eine verschlüsselte Datenübertragung ist bei drahtloser Kommunikation von besonderer Bedeutung.
Mit einer Verschlüsselung kann ein unberechtigtes Abhören der Funkschnittstelle und Auswerten der Daten
verhindert werden. Ein für die höchste Geheimhaltungsstufe zugelassenes Verfahren ist der Advanced
Encryption Standard (AES). Der Algorithmus ist frei verfügbar und darf ohne Lizenzgebühren eingesetzt
werden. Das Funkmodul Preon32 von Virtenio enthält eine AES-Implementierung in Hardware, die eine schnelle
Bearbeitung von Datenblöcken ermöglicht.
In diesem Beispiel wird ein Datenblock mit der Länge von 16 Byte nach dem AES-ECB-128Bit Verfahren
verschlüsselt und wieder entschlüsselt.
/*
* Copyright (c) 2011., Virtenio GmbH
* All rights reserved.
*/
package com.virtenio.webdemo;
import com.virtenio.drivers.ieee_802_15_4.AT86RF231;
import com.virtenio.drivers.ieee_802_15_4.NativeAT86RF231;
import java.io.IOException;
public class RadioAESECB {
public static void main(String[] args) throws IOException {
NativeAT86RF231 t = NativeAT86RF231.getInstance(0);
t.open();
t.setState(AT86RF231.STATE_TRX_OFF);
byte[] key = {
0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00,
0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x00
};
byte[] data = new byte[]{
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
};
// AES-ECB Encryption/Decryption with byte-array
{
byte[] data_encrypted = new byte[data.length];
byte[] decryptKey = new byte[16];
// Set Key
t.aesSetKey(key);
t.aesEncryptECB(data, 0, data_encrypted, 0, 16);
t.aesGetKey(decryptKey);
byte[] data_decrypted = new byte[data.length];
t.aesSetKey(decryptKey);
t.aesDecryptECB(data_encrypted, 0, data_decrypted, 0, 16);
}
t.close();
}
}


