Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android encryption

I am working on an android application, and I need to use encryption for one aspect of it. I am really indifferent to which algorithm I use (AES, DES, RSA, etc...). I am aware that Java has a crypto package, but I am not familiar with it at all. Can someone post an example on how to do an encrypt/decrypt function?

like image 737
Señor Reginold Francis Avatar asked Jun 30 '10 15:06

Señor Reginold Francis


People also ask

What type of encryption does Android use?

Android full-disk encryption is based on dm-crypt , which is a kernel feature that works at the block device layer. Because of this, encryption works with Embedded MultiMediaCard (eMMC) and similar flash devices that present themselves to the kernel as block devices.

Do Android phones have encryption?

Android has two methods for device encryption: file-based encryption and full-disk encryption.

What does encryption mean on Android?

Android encryption, or encryption in general, is the process of encoding data into an indecipherable format to make it incomprehensible to users without the proper credentials. Once an Android device is encrypted, the system automatically encodes all user data on the device lock.

How do I enable encryption on my Android?

To get started, go to Settings > Security > Encryption > Screen lock. Select the PIN option and enter a PIN. The Android device is ready to be encrypted. Use the settings menu to open the encryption screen below by following Settings > Security > Encryption > Encrypt tablet or Encrypt phone.


2 Answers

The java AES library has a flaw in it that allows, under the right circumstances, a listener to decrypt the packets sent. See Padding Oracle Exploit Tool vs Apache MyFaces.

That being said check out this SO question Java 256bit AES Encryption.

Bouncy Castle AES EXAMPLE stolen from: http://www.java2s.com/Code/Java/Security/EncryptionanddecryptionwithAESECBPKCS7Padding.htm

import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec;  public class MainClass {   public static void main(String[] args) throws Exception {     Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());         byte[] input = "www.java2s.com".getBytes();     byte[] keyBytes = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04,                   0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,                   0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,                   0x15, 0x16, 0x17 };      SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");      Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");      System.out.println(new String(input));      // encryption pass     cipher.init(Cipher.ENCRYPT_MODE, key);      byte[] cipherText = new byte[cipher.getOutputSize(input.length)];     int ctLength = cipher.update(input, 0, input.length, cipherText, 0);     ctLength += cipher.doFinal(cipherText, ctLength);     System.out.println(new String(cipherText));     System.out.println(ctLength);      // decryption pass     cipher.init(Cipher.DECRYPT_MODE, key);     byte[] plainText = new byte[cipher.getOutputSize(ctLength)];     int ptLength = cipher.update(cipherText, 0, ctLength, plainText, 0);     ptLength += cipher.doFinal(plainText, ptLength);     System.out.println(new String(plainText));     System.out.println(ptLength);   } } 
like image 113
Ethan Heilman Avatar answered Sep 22 '22 16:09

Ethan Heilman


Look at my answer here Android database encryption. It contains 2 files that you can include in any of your applications that require data storage to be encrypted.

like image 45
Plo_Koon Avatar answered Sep 20 '22 16:09

Plo_Koon