Шифрование конфиденциальных данных приложения в Java - PullRequest
1 голос
/ 10 декабря 2010

В настоящее время я оцениваю проект, в котором обрабатывается конфиденциальная личная информация, поэтому ее необходимо зашифровать.Мы говорим о нескольких сотнях мегабайт мультимедийных файлов, таких как MP3 или что-то еще.Приложение наверняка будет реализовано на Java с JavaFX в качестве GUI / Frontend.Сейчас я ищу реальное решение для защиты этих данных от непреднамеренного / преднамеренного неправильного использования.Данные должны быть как-то зашифрованы.Пользователь должен предоставить учетные данные для входа в систему перед использованием программного обеспечения, поэтому использование пароля для разблокировки ключа, используемого для симметричного шифрования, возможно.Пользователи приложения будут не профессионалами, поэтому такие вещи, как TrueCrypt или аналогичные решения, не помогут.Хотя какое-то прозрачное решение было бы лучше.Так есть ли (полу) стандартное решение этой проблемы?

Спасибо за помощь

Привет,

Андреас

Ответы [ 2 ]

2 голосов
/ 13 декабря 2010

Следующий метод шифрует данный массив байтов, где keyC - это ключ шифрования. initalVector - начальный вектор, используемый для шифрования. Этот вектор обычно используется для шифрования AES в режиме счетчика (CTR), но не является необходимым для других режимов. Это массив из определенных 16 байтов, используемый для шифрования и дешифрования.

private byte[] encryptAES128(byte[] input, byte[] initialVector) {
    SecretKey aeskey = new SecretKeySpec(keyC, 0, 16, "AES");
    AlgorithmParameterSpec paramSpec = new IvParameterSpec(initialVector);
    cipher = Cipher.getInstance("AES/CTR/NOPADDING");
    getAesCTRCipher().init(Cipher.ENCRYPT_MODE, aeskey, paramSpec);
    return getAesCTRCipher().doFinal(input);
}

Этот метод возвращает новый байтовый массив, являющийся зашифрованным входным массивом. Он всегда работает в блоках по 16 байт. Для больших файлов вам нужно запустить цикл for для байтов и объединить результат:)

Удачи!

Edit: После шифрования блока из 16 байтов необходимо увеличить начальный вектор, то есть, если шифрование выполняется в режиме счетчика:

0 голосов
/ 10 декабря 2010

Используйте алгоритм шифрования с открытым ключом, такой как RSA. сильный, почти безотказный и простой в использовании и понимании вероятно, есть даже метод или даже класс для RSA или аналогичные шифрования в Java.

...