Подтвердить что ты не робот

Android-шифрование

Я работаю над приложением android, и мне нужно использовать шифрование для одного его аспекта. Я действительно безразличен к используемому алгоритму (AES, DES, RSA и т.д.). Я знаю, что Java имеет криптовальный пакет, но я вообще не знаком с ним. Может ли кто-нибудь опубликовать пример о том, как сделать функцию шифрования/дешифрования?

4b9b3361

Ответ 1

В библиотеке java AES есть недостаток, позволяющий при правильных обстоятельствах прослушивать дешифрование отправленных пакетов. См. Заполнение Oracle Exploit Tool vs Apache MyFaces.

При этом проверьте этот вопрос SO Java 256bit AES Encryption.

Bouncy Castle AES ПРИМЕР украден из: 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);
  }
}

Ответ 2

Посмотрите на мой ответ здесь Шифрование базы данных Android. Он содержит 2 файла, которые вы можете включить в любое из ваших приложений, которым требуется шифрование данных.

Ответ 3

Я также проверил бы Укрытие, чтобы узнать, соответствует ли он вашему счету. Он имеет простой в использовании API, который абстрагирует криптографические данные: https://github.com/facebook/conceal/