Pregunta

¿Cuál es la mejor manera de almacenar datos entre programa se ejecuta en Java? Ya sé que se puede utilizar un archivo de texto y almacenar la información de esa manera, pero me preguntaba si hay una mejor manera de almacenar la información que se genera por el programa entre las ejecuciones del programa.

Además, ¿hay alguna manera de hacerlo con el fin de mantener la información segura? En concreto, quiero mantener al usuario final de la posibilidad de acceder a él.

¿Fue útil?

Solución

  

Me preguntaba si había alguna manera   otra colocando la información que es   genereated por el programa entre las corridas   del programa?

Sólo tiene que utilizar un ObjectOutputStream para serializar en un archivo y un ObjectInputStream para recuperarlo.

  

También hay alguna manera de hacerlo con el fin de   para mantener la información segura? de   el usuario final es capaz de acceder a él?

Si el código se ejecuta en el sistema del usuario final, entonces no, no hay manera de evitar que consigan los datos - que ni siquiera es digno de su tiempo tratando de codificar de alguna manera, ya que es fácil de conectar un depurador e inspeccionar el programa de estado mientras se está ejecutando. Como un formato binario, la serialización de Java evitará que los usuarios no técnicos de descifrarla, y eso es más o menos lo mejor que se puede esperar.

Otros consejos

Nunca he utilizado yo mismo, pero creo que eso es lo de JDK java.util.prefs.Preferences fue diseñado originalmente para.

Puede utilizar Propiedades el almacenamiento de información. Si quieres que sea seguro, ejecutarlo a través de algún tipo de corriente cifrado .

La criptografía de archivos o base de datos local con contraseña.

Se puede usar db4o para almacenar los datos. Es una base de datos de objeto y soporta la encriptación.

Usted podría estar interesado en Quick'n'dirty persistencia para Java .

Algunas personas sugirieron utilizar la serialización. Ten en cuenta que hay una serie de inconvenientes a la serialización.

  • El problema de versiones. Si cambia algo en las clases que son serializados archivos, a continuación, serializados escritos con la antigua versión de su programa no se pueden leer fácilmente más.
  • Usted no sabe el formato de archivo exacto. Va a ser muy difícil si se desea escribir un programa diferente en el futuro, posiblemente en un lenguaje de programación diferente, que necesita para leer el archivo.

serialización no está bien adaptado para almacenamiento a largo plazo.

Se recomienda usar una base de datos pequeña, incrustado en su lugar. (Una base de datos integrada es una base de datos que se ejecuta en el mismo proceso que su programa). Tenga en cuenta que Java de Sun incluye Java DB , que es una versión de Apache Derby. También hay HSQLDB , que es otra base de datos de Java pequeña y pura que puede ser utilizado como una base de datos integrada.

Lo mejor que puedes utilizar al comenzar Java es utilizar un ObjectOutputStream o un archivo de texto. Una vez que tenga más experiencia, puede utilizar las bases de datos.

¿Qué hay de serialización?

No se puede leer por el usuario y que es relativamente fácil.

Como otros han dicho, hay una miríada de formas para serializar los datos. Se puede usar algo ligero como SQLite o simplemente serialización simple. Sólo se dan cuenta de que cualquier intento que hacen para cifrar los datos pueden ser derrotados, especialmente en el caso del código de Java, ya que se puede revertir fácilmente.

Sin embargo, si la mayor parte de los usuarios no son lo suficientemente técnica para comprender la complejidad de la ingeniería de un programa Java inversa para encontrar la manera de descifrar los datos, usted debería ser capaz de salirse con algunos métodos básicos de encriptación como lo mencionado en otra respuesta y ser bueno. Sólo se dan cuenta de que en cualquier momento nada reside en una máquina que no controlas, no hay manera de mantener a los usuarios más persistentes de encontrar la manera de crack.

Yo personalmente se recomienda usar SQLite y el uso de algunas de cifrado simple de los datos que pone en los campos así que si alguien es lo suficientemente inteligente como para ser capaz de conectarse al archivo de base de datos locales, que todavía tienen que invertir el algoritmo de cifrado de alguna manera . 99,9% de los usuarios habituales no se molestará con este nivel de investigación.

XML como una técnica de serialización es más resistente a los cambios futuros en el programa que va a ajustar el almacenamiento que los formatos binarios como la serialización de objetos. Sin embargo eso lo haría muy legible y modificable por la mayoría de los usuarios.

Una compresión muy simple / descompresión dejaría de casi todos los usuarios entren en el contenido real de los datos. El uso de GZIPInputStream / GZIPOutputStream alrededor de su flujo de la escritura actual hará el trabajo. El más elaborado su defensa contra la palanca se obtiene la más tendrá un impacto en los usuarios de su software.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top