DidacticEncryption
Bibliothek zur Implementierung von vereinfachten Verschlüsselungen auf Arduino-Boards. Die Funktionalitaeten entsprechen dem Stand der Technik, die Umsetzung ist didaktisch reduziert.
Download
Start download with the button on the right side. Choose the right format and start the download.
After download install library: https://www.arduino.cc/en/guide/libraries section "Importing a .zip Library"
Symetrische Verschluesselung (XOR)
Beispiele
- symetricExample.ino -> TODO
Funktionen und Parameter
#Anlegen der Instanz
// Anlegen des DidacticEncSymetric-Objekts
// symEncrypt -> moeglicher Name für Objekt
DidacticEncSymetric symEncrypt;
#Setzen des Schluessels für die symetrische Verschluesselung
int symEncrypt.setKey(char*);
// param1: Schluessel-string (char-Array mit '\0' am Ende) mit der Laenge LENGHT_KEY (default 8) + 1
// return: ERROR-Wert: DE_ERROR_NO_ERROR,
// DE_ERROR_KEYLENGHT_LONG -> Key zu lang
// DE_ERROR_KEYLENGHT_SHORT -> Key zu kurz
#Symetrisch ver- und entschluesseln
void symEncrypt.crypt(char* messageIn, char* messageOut);
// param1: Eingehende Nachricht (Lesbarer Text oder verschluesselter Text)
// param2: Ausgehende Nachricht (Verschluesselter Text oder lesbarer Text)
//-> verwendet internen Key, welcher über setKey(char*) gesetzt wurde
void symEncrypt.crypt(char* messageIn, char* messageOut, char* key);
// param3: Key-string (char-Array mit '\0' am Ende)
// -> ignoriert internen Key - sinvoll wenn verschiedene Key in einem Programm verwendet werden sollen.
void symEncrypt.crypt(char* messageIn, int lenghtMessageIn, char* messageOut, int lenghtMessageOur, char* key);
// param2 + param 4: Laenge der uebergebenen Nachrichten -> verwenden wenn kein ’\0' am Ende steht
Konstanten
Konstanten aus der Library die fuer die Programmierung genutzt werden und angepasst werden koennen.
#Laenge Key und Daten
DE_LENGHT_KEY default: 8
MAX_LEN_CYPHERTEXT default: DE_LENGHT_KEY*4
MAX_LEN_PLAINTEXT default: DE_LENGHT_KEY*4
#Errors (nicht veraendern!)
DE_ERROR_NOERROR 1
DE_ERROR_KEYLENGHT_LONG -1
DE_ERROR_KEYLENGHT_SHORT -2
Asymetrische Verschluesselung (angelehnt an RSA)
Beispiele
- asymetricExample.ino -> TODO
Funktionen und Parameter
#Anlegen der Instanz
// Anlegen des DidacticEncAsymetric-Objekts
// asymEncrypt -> moeglicher Name für Objekt
DidacticEncAsymetric asymEncrypt;
#Schlüssel erzeugen und verwenden
void generateKeys();
//erzeugt Private-Key, Public-Key und RSA-Modul
long getPrivateKey();
// return: Private-Key
long getPublicKey();
// return: Private-Key
long getRsaModule();
// return: RSA-Modul (zur Verschluesselung in Kombination entweder mit Public- oder Private-Key)
#Asymetrisch verschluesseln
int asymEncrypt.encrypt(char* plainText, char* cypherText, long key, long rsaModule);
// param1: Eingehende Nachricht (Lesbarer Text)
// param2: Ausgehende Nachricht (Verschluesselter Text)
// param3: Key zum Verschluesseln der Nachricht
// param4: RSA-Modul zum Verschluesseln der Nachricht
// return: Lange der verschluesselten Nachricht (Anzahl Zeichen -> in ASCII-Zeichen gewandelte long-Werte )
int asymEncrypt.encrypt(char* plainText, int lengthOfPlainText, char* cypherText, long key, long rsaModule);
// param2: Laenge der eingehenden Nachricht -> verwenden wenn kein '\0' am Ende steht
#Asymetrisch entschluesseln
int asymEncrypt.decrypt(char* cypherText, char* plainText, long key, long rsaModule);
// param1: Eingehende Nachricht (verschluesselter Text)
// param2: Ausgehende Nachricht (lesbarer Text)
// param3: Key zum entschluesseln der Nachricht
// param4: RSA-Modul zum entschluesseln der Nachricht
// return: Laenge der entschluesselten Nachricht (Anzahl Zeichen)
void setRandomSeedPin(int);
// param1: unbenutzter Analog-Pin A0 bis A5 zur Erzeugung von (quasi-) zufaelligen Zahlen
Konstanten
Konstanten aus der Library die fuer die Programmierung genutzt werden und angepasst werden koennen.
#ASCII Trennzeichen zwischen Cypher-Werten
CYPHER_SEPARATOR default:";"
#Maximale Laenge der verschluesselten Nachricht
MAX_LEN_CYPHERTEXT default: 250
#Primes
MAX_NR_OF_PRIMES 48 (nicht veraendern)
MAX_PRIME_OFFSET 3