EasyBlowfish

Manchmal ist es wichtig, ein paar Dinge von Grund auf zu verstehen, doch oftmals werden hierfür diverse Frameworks oder Bibliotheken verwendet, die einem alles auf magische Weise abnehmen wollen (und können), allerdings verpasst man dabei selber etwas zu lernen. Man könnte sagen, dass man nur die Benutzung eines Frameworks erlernt anstatt den eigentlichen Prozess oder Algorithmus, und genau das ist auch der Grund, wieso ich mir die ein oder anderen Dinge eben selber gebaut habe.

Ja, ich weiß, man erfindet teilweise das Rad neu und ist nicht schneller, aber es geht ja nicht immer um Geschwindigkeit, sondern darum, dass man selber auch etwas neues erlernt oder sich einer Problemstellung gewidmet hat.

Wer Daten verschlüsseln will, muss in Java den Algorithmus nicht neu entwickeln, sondern kann auf die Java-Implementierung zurückgreifen. Das Problem jedoch: man muss mit Bytes arbeiten. Wer die dafür nötige Wrapperklasse nicht bauen will, der kann meine Version nutzen. Ich habe sowohl für Strings als auch für InputStreams ein paar Helfer gebaut. Viel Spaß damit!

zum Download


String cleartext = "some string";
String someUltraSecretPassword = "this should be a secret password";

// Handling String-objects
String blowfished = EasyBlowfish.encrypt(cleartext, someUltraSecretPassword);
String decoded = EasyBlowfish.decrypt(blowfished, someUltraSecretPassword);

// Handling Streams, useful because it still is a InputStream!
InputStream blowfishedStream = EasyBlowfish.encrypt(SOMESTREAM, someUltraSecretPassword);
InputStream decodedStream = EasyBlowfish.decrypt(blowfishedStream, someUltraSecretPassword);

/*
method-signatures:
public static InputStream encrypt( InputStream toEncrypt, String key ) throws Exception
public static InputStream decrypt( InputStream toDecrypt, String key ) throws Exception

public static String encrypt( String toEncrypt, String key ) throws Exception // Returns a BASE64-Coded String
public static String decrypt( String toDecrypt, String key ) throws Exception // Requires a BASE64-Coded String
*/
work in progress