java 本地数据存储问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 本地数据存储问题相关的知识,希望对你有一定的参考价值。

类似做一个考试系统,如何将试卷存储在本地,应该使用什么样的数据格式,最好能有加密解密,存储表格等功能

这好办啊

写一个类实现序列化(序列化可以在IO流中传输 即 implements Serializable )

加上map属性用来存你要的数据 

写一些获得map中的数据方法

我写一个存取数据的方法:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class TestAa 
public static void main(String[] args) throws Exception 
//存数据:
TestObject a = new TestObject();
a.setAa("随便存一个值");
File file = new File("D:\\\\data.dat");
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(a);

//取数据:
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
TestObject b = (TestObject)in.readObject();
System.out.println(b.getAa());


class TestObject implements Serializable
private String aa;

public String getAa() 
return aa;


public void setAa(String aa) 
this.aa = aa;


参考技术A 调用7Z的模块吧,这个可以加密。 参考技术B 存储表格是个什么功能?直接把试题存成数据库的表不行嘛?追问

不想使用数据库,想以文件的形式保存

Java 首选项本地安全存储

【中文标题】Java 首选项本地安全存储【英文标题】:Java Preferences Local Secure Storage 【发布时间】:2012-07-29 10:36:21 【问题描述】:

我正在寻找一个 安全 进程来将密码存储在 Java 客户端应用程序中。 我将使用Preferences API 来存储数据客户端。

我希望我的客户能够存储登录信息(登录名和密码)以加快下次登录。我不想保持密码清晰,所以我会加密它。 客户端/服务器通信是通过 SSL 建立的,所以我可以在服务器端存储密钥。

我的第一个建议是,在成功登录时,服务器会向客户端发送一个密钥来加密他的密码,然后将其存储。然后在下一个会话打开时,客户端将他的最后一个会话 ID 发送回服务器,服务器通过解密密钥进行回答。

这可以使用私钥/公钥或仅使用一个密钥。

我认为它不安全,因为会话 ID 将被清楚地存储,因此任何人都可以解密密码...

任何命题,都必须有一个经典的流程来解决这个..?

提前致谢!

【问题讨论】:

【参考方案1】:

没办法,真的。您希望计算机记住一个秘密,这样用户就不必与系统交互来进行身份验证。您可以加密秘密并自动解密,但这仍然可以通过机器上的信息来实现。有权访问本地存储的攻击者将能够回放您实施的任何方案并检索密码。

一种妥协是钥匙串系统,其中所有存储的用户密码都由用户在登录时产生的主密码加密,因此他只需要记住一个。但这超出了单个应用程序的范围。

【讨论】:

对,我就是这么想的。我受到了经常实现这一点的扑克软件的启发(比如 Winamax 客户端)。我想知道他们是如何在法国成功通过安全测试的(ARJEL 管理部门正在控制安全)。

以上是关于java 本地数据存储问题的主要内容,如果未能解决你的问题,请参考以下文章

本地存储数据库

java中hashtable怎样存储数据和读取数据

获取 java.io.IOException:获取服务帐户的访问令牌时出错:调用数据存储时连接超时

安卓使用SQLite将数据存储在本地并做简单处理的学习1

如何在 iPhone 设备中本地保存图像和数据

如何使用 Angularjs 将数据存储在本地存储中?