Skip to content

Latest commit

 

History

History
80 lines (67 loc) · 3.26 KB

README.md

File metadata and controls

80 lines (67 loc) · 3.26 KB

CryptographyAndroid

CryptographyAndroid is a complements javax.crypto.Cipher and java.security.KeyStore to make it much easier to encrypt and decrypt your data. CryptographyAndroid stores cryptographic keys in the keyStore.

#RSA and AES CryptographyAndroid uses RSA and AES to cryptography your data.

  • AES is a symmetric cryptographic algorithm. symmetric means there is one key will be used for encryption and decryption. AES supports a block length of 128 bits and key lengths of 128, 192, and 256 bits.
    • AES in CryptographyAndroid library uses 128 bits as key length.
  • RSA is an asymmetric cryptographic algorithm. Asymmetric means that there are two different keys
    • Puplic key is used to encrypt messages, can be known to everyone.
    • Private key is used to decrypt messages, must be kept in a secure place.

#KeyStore KeyStore represents a storage facility for cryptographic keys and certificates. KeyStore stores cryptographic keys in a container to make it more difficult to extract from the device

#EXAMPLE:

    private String message = "i want to encrypt this message, it is very important message";
    private static final String MESSAGE_KEY_STORE_ALIAS = "keyStoreAliasForMessage";
    
    
    CryptographyManager cryptographyManager = new CryptographyManager(this);

        try {
            String cipherMessage = cryptographyManager.encrypt(message, MESSAGE_KEY_STORE_ALIAS);
            Toast.makeText(this, cipherMessage, Toast.LENGTH_SHORT).show();

            String decryptedMessage = cryptographyManager.decrypt(cipherMessage, MESSAGE_KEY_STORE_ALIAS);

            Toast.makeText(this, decryptedMessage, Toast.LENGTH_SHORT).show();

            Log.i(TAG, " Does decrypted message equals the original one : " 
            + Boolean.toString(message.equals(decryptedMessage)));

        } catch (KeyStoreException e) {
            e.printStackTrace();
        } catch (CertificateException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (NoSuchProviderException e) {
            e.printStackTrace();
        } catch (InvalidAlgorithmParameterException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (UnrecoverableEntryException e) {
            e.printStackTrace();
        } catch (GeneralSecurityException e) {
            e.printStackTrace();
        }

#Download

<dependency>
<groupId>com.github.fhdalotaibi</groupId>
<artifactId>android-cryptography</artifactId>
<version>1.0.0</version>
<type>aar</type>
</dependency> 
compile 'com.github.fhdalotaibi:android-cryptography:1.0.0'