Jasypt (Java Simplified Encryption)
is a library aimed at providing developers a simple way to add encryption capabilities to their projects including: password digesting, text/binary encryption, Hibernate transparent encryption and Spring Security (ACEGI) integration.
What's new in 1.3:
- A new open provider API which will allow the use of non-default JCE providers like Bouncy Castle. With this, any PBE or digest algorithm you can get from any JCE provider is available for you to use with Jasypt.
- A new web PBE configuration system for avoiding storing encryption passwords in files in web applications, and instead asking the authorised admin for these passwords through a web form each time the application is deployed.
- Ability to output Strings encoded in hexadecimal besides BASE64.
- Other minor new features like Unicode text normalization applied to password matching.
- New and updated documentation and new article: How to encrypt user passwords.
Jasypt's main features:
- Jasypt follows the RSA standards for password-based cryptography, and provides you with both unidirectional and bidirectional encryption techniques.
- Open API for use with any JCE provider, and not only the default Java VM one. Jasypt can be easily used with well-known providers like Bouncy Castle.
- Higher security for your users' passwords.
- Binary encryption support. Jasypt allows the digest and encryption of binaries (byte arrays). Encrypt your objects or files when needed (for being sent over the net, for example).
- Number encryption support. Besides texts and binaries, it allows the digest and encryption of numeric values (BigInteger and BigDecimal, other numeric types are supported when encrypting for Hibernate persistence).
- Completely thread-safe.
- Provides both easy, no-configuration encryption tools for users new to encryption, and also highly configurable standard encryption tools, for power-users.
- Hibernate 3 optional integration for persisting fields of your mapped entities in an encrypted manner. Encryption of fields is defined in the Hibernate mapping files, and it remains transparent for the rest of the application (useful for sensitive personal data, databases with many read-enabled users...). Encrypt texts, binaries, numbers, booleans, dates...
- Seamlessly integrable into a Spring application. All the digesters and encryptors in jasypt are designed to be easily used (instantiated, dependency-injected...) from Spring. And, because of their being thread-safe, they can be used without synchronization worries in a singleton-oriented environment like Spring.
- Spring Security (Acegi Security) optional integration for performing password encryption and matching tasks for the security framework, improving the security of your users' passwords by using safer password encryption mechanisms and providing you with a higher degree of configuration and control.
- Comprehensive guides and javadoc documentation, to allow developers to better understand what they are really doing to their data.
- Robust charset support, designed to adequately encrypt and digest texts whichever the original charset is. Complete support for languages like Japanese, Korean, Arabic... with no encoding or platform issues.
- Very high level of configuration capabilities: The developer can implement tricks like instructing an "encryptor" to ask a, for example, remote HTTPS server for the password to be used for encryption. It lets you meet your security needs.
Visit the project's website at: http://www.jasypt.org