Encryption is a simple way to encrypt and decrypt strings on Android and Java project.
#How to use#
1º Add JitPack to your build file
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
2º Add the gradle dependency
compile 'se.simbio.encryption:library:1.3.0'
3º Use Encryption
a) Get a default Encryption instance
Encryption encryption = Encryption.getDefault("YourKey", "YourSalt", yourByteIvArray);
b) Or build a custom Encryption instance
Encryption encryption = new Encryption.Builder()
.setKeyLength(128)
.setKey("YourKey")
.setSalt("YourSalt")
.setIv(yourByteIvArray)
.setCharsetName("UTF8")
.setIterationCount(65536)
.setDigestAlgorithm("SHA1")
.setBase64Mode(Base64.DEFAULT)
.setAlgorithm("AES/CBC/PKCS5Padding")
.setSecureRandomAlgorithm("SHA1PRNG")
.setSecretKeyType("PBKDF2WithHmacSHA1")
.build();
4º Encrypt your text
String encrypted = encryption.encryptOrNull("Text to be encrypt");
5º Decrypt your text
String decrypted = encryption.decryptOrNull(encrypted);
More examples see Examples folder, there is an Android and a Java project, or see the tests.
#FAQ#
- What is Encryption library?
- Encryption library is an Open Source library to help encryption routines in Android and Java applications, our target is to be simple and secure.
- What is the "IV", what should be my
yourByteIvArray- Encryption 1.2+ uses by default the AES algorithm in CBC mode, so to encrypt and decrypt works you should have the same key and the same IV byte array to encrypt and to decrypt. An example of IV is
byte[] iv = {-89, -19, 17, -83, 86, 106, -31, 30, -5, -111, 61, -75, -84, 95, 120, -53};like you can see, 16 bytes in a byte array. So if you want to use this library I recommend you create you own IV and save it 💾.
- Encryption 1.2+ uses by default the AES algorithm in CBC mode, so to encrypt and decrypt works you should have the same key and the same IV byte array to encrypt and to decrypt. An example of IV is
- I Don't like null returns when errors occurs, what to do to handle errors?
- You have the power to handle the exceptions, instead of uses
encryptOrNullmethod just uses theencryptmethod. The same for thedecryptOrNull, just uses thedecryptmethod.
- You have the power to handle the exceptions, instead of uses
- I'm getting problems with main thread, what to do?
- Encrypt routines can take time, so you can uses the
encryptAsyncwith aEncryption.Callbackto avoid ANR'S. The same fordecryptAsync
- Encrypt routines can take time, so you can uses the
- I'm an older user, version 1.1 or less, what to do to update Encrypt to version 1.2+?
- The library has several changes in his structure in version 1.2, both in algorithm and in code usage, so if you are an older user you need migrate the encrypted stuff or configure the
Buildermanually to the same parameters used in version 1.1 and olds.
- The library has several changes in his structure in version 1.2, both in algorithm and in code usage, so if you are an older user you need migrate the encrypted stuff or configure the
##Want to contribute?##
Fell free to contribute, We really like pull requests ![]()
##License##
GNU Lesser General Public License at version 3
###Third part###
- Copyright (C) 2010 The Android Open Source Project, applied to:
- Base64 (third.part.android.util.Base64) original comes from here