2013-04-15 3 views
0

В настоящее время я создаю приложение, которое должно сохранять конфиденциальные данные в J2ME, либо в RMS, либо с использованием класса хранения LWUIT. (Например, имя пользователя и пароль)Как сохранить данные в J2ME?

Насколько безопасна такая реализация и какие шаги необходимо предпринять для обеспечения безопасности данных и не уязвимы к краже?

ответ

2

RMS не зашифрован - злоумышленник может легко считывать любые данные. Вам необходимо зашифровать данные - я рекомендую провайдер AES Bouncycastle, но поставщик Java AES также работает (хотя он не так эффективен, и на нем будет need to enable 256-bit keys). See the accepted answer to this question for some example code, я не рекомендую ничего менять в коде, не спрашивая StackOverflow или другое хорошее Q & Сначала сайт (очень просто использовать библиотеки шифрования неправильно); в коде используется поставщик криптования Java, чтобы использовать поставщик Bouncycastle Cipher.getInstance("AES/CBC/PKCS7Padding", new BouncyCastleProvider()) после импорта библиотеки Bouncycastle. Важно отметить, что код генерирует Keyspec spec от char[] password - пользователю потребуется ввести этот пароль не реже одного раза в сеанс, чтобы вы могли расшифровать данные (вы не можете сохранить пароль на устройстве, цель шифрования данных). Также важно то, что вам нужно будет использовать один и тот же IV (вектор инициализации) на этапах шифрования и дешифрования; этот IV должен быть уникальным для каждой записи, которую вы шифруете (например, когда вы шифруете foo.txt, затем используйте другой IV, чем когда вы шифруете файл bar.txt), но он не должен быть секретным (вы можете хранить его в виде открытого текста наряду с зашифрованным файлом). В качестве дополнительной меры предосторожности, протрите char[] password, когда вы закончите с ним.

Смежные вопросы