Java: Kryptographische Bibliotheken

SUN-JCE-Provider und Oracle-JCE-Provider bieten in dem meisten Fällen gerade noch das Allernotwendigste an, in manchen Fällen nicht einmal das.
Blockchiffren wie RC2, RC4, DES sind vertreten, die eigentlich nicht mehr verwendet werden sollten, genauso wie die Hashfunktionen MD2, MD5 und SHA1, bei der Passwort-Verschlüsselung war lange Zeit Triple-DES die beste Option für die Blockchiffre und PBKDF2 ist bis heute die einzige Option zur Ableitung des Schlüssels, die Schlüssellänge für RSA ist standardmäßig 1024.
Es gibt zwar auch Algorithmen, die noch nicht als unsicher gelten: AES, Blowfish, vielleicht auch noch Triple-DES als Blockchiffren, SHA256, SHA384 und SHA512 als Hashfunktionen, aber die Auswahl ist doch sehr eingeschränkt. Im Grunde werden die wichtigsten NIST-Standards verspätet umgesetzt. Das ist in den meisten Fällen nicht die schlechteste Wahl (abgesehen von PBKDF2), denn nicht alle wollen sich damit beschäftigen, welcher Algorithmus aktuell noch als sicher gilt. Aber es ist auch nicht gerade die beste Wahl, denn NIST-Standards sind inzwischen mit einem Fragezeichen versehen und bei der Verwendung längst gebrochener Algorithmen wie von RC2 oder DES werden keine Warnmeldungen ausgegeben. Wer sich nicht auf dem Gebiet der Kryptographie umschauen will, ist mit einer Vorauswahl an Algorithmen wie Kalium besser bedient.
Für geringe Ansprüche und einfache Anwendungsgebiete ist der SUN-JCE-Provider oft ausreichend und liegt praktischerweise meistens schon vor. Für mehr taugt er allerdings nicht.
Gut, das es noch andere Bibliotheken gibt.

Bibliotheken mit JCE-Provider (Cryptographic Service Providers) lassen sich einfach (immer gleich) implementieren und setzen kaum kryptographische Kenntnisse voraus. Die Auswahl an Algorithmen ist meist wesentlich größer als beim SUN-Provider.
Noch mehr Auswahl ergibt sich erst, wenn die Provider-Architektur verlassen wird. Dann gibt es kaum kryptographische Algorithmen, nicht in Java implementiert sind.
JCE-kompatible Bibliotheken (JCE-Provider)

Manche Bibliotheken bieten eine feste Auswahl an Algorithmen an. Das hat den Vorteil, dass die Auswahl der Algorithmen nicht den Entwickler*innen überlassen bleibt und längst als unsicher geltende Primitive wie die Blockchiffre DES oder die Hashfunktion MD2 aussortiert werden können. Zwecks Abwärtskompatibilität verbleiben diese Algorithmen in den anderen Bibliotheken und es wird niemand daran gehindert oder wenigstens davor gewarnt, sie weiter zu benutzen.
Das ist sicher eine gute Initiative, um die Verwendung gebrochener Algorithmen zu verhindern.
Bibliotheken mit fester Vorauswahl an Algorithmen

Andere Bibliotheken, Toolkits oder Frameworks zeichnen sich dadurch aus, dass sie besonders einfach zu verwenden sind. Die Provider-Architektur bietet auch zahlreiche Möglichkeiten der fehlerhaften Implementierung, der Quellcode zur einfachen Verschlüsselung einer Datei oder eines Textes kann lang sein. Easy-To-Use-Bibliotheken bieten meist auch keine große Auswahl an Algorithmen an, aber sie sind vor allem sehr einfach zu implementieren.
Easy-To-Use-Bibliotheken

Neben den Allround-Bibliotheken, die möglichst jeden Bedarf abdecken wollen, gibt es auch spezialisierte Bibliotheken, die sich auf einen bestimmten Bereich beschränken und diesen aber oft besonders umfassend implementieren, seien es Hashfunktionen, Kryptographie über Elliptische Kurven oder andere Bereiche.
Spezialisierte Bibliotheken