java字符串加扰

java字符串加扰,java,encryption,Java,Encryption,我目前正在开发一个程序,可以获取用户数据(姓名、地址、电话)。我想在保存数据时使其不可读。因为它不会是一个发布的程序,我不想使用太复杂的密码,只是一个简单而快速的置乱/解读算法。如何定义一个类(比如说Foo)并创建该类的实例,这些实例可以保存数据,然后将对象放入列表中。然后,将列表对象另存为二进制文件。大概是这样的: public static void saveObject(List<Foo> obj, String filePath) { OutputStream os

我目前正在开发一个程序,可以获取用户数据(姓名、地址、电话)。我想在保存数据时使其不可读。因为它不会是一个发布的程序,我不想使用太复杂的密码,只是一个简单而快速的置乱/解读算法。

如何定义一个类(比如说
Foo
)并创建该类的实例,这些实例可以保存数据,然后将对象放入列表中。然后,将列表对象另存为二进制文件。大概是这样的:

public static void saveObject(List<Foo> obj, String filePath)
{
    OutputStream os = null;
    try
    {
        os = new ObjectOutputStream(new FileOutputStream(filePath));
        os.writeObject(obj);
    }
    catch(Exception ex){}
    finally
    {
        os.close();
    }
}
publicstaticvoidsaveobject(列表对象,字符串文件路径)
{
OutputStream os=null;
尝试
{
os=新对象输出流(新文件输出流(文件路径));
os.writeObject(obj);
}
捕获(例外情况除外){}
最后
{
os.close();
}
}
然后您可以像这样加载它:

public static List<Foo> loadObject(String filePath)
{
    List<Foo> obj = null;
    InputStream is = null;
    try
    {
        is = new ObjectInputStream(new FileInputStream(filePath));
        obj = (List<Foo>) is.readObject();
    }
    catch(Exception ex){}
    finally
    {
        is.close();
    }
    return obj;
}
公共静态列表加载对象(字符串文件路径)
{
列表obj=null;
InputStream=null;
尝试
{
is=新对象输入流(新文件输入流(文件路径));
obj=(List)是.readObject();
}
捕获(例外情况除外){}
最后
{
is.close();
}
返回obj;
}

请注意,要使用此对象序列化,您需要实现可序列化的接口。

您只需要了解算法的强度,因为根据您的帖子,您确实需要某种加密/解密方法。 你可以想很多方法来“隐藏”你的数据,但这种“防御”可以用一种相对简单的方法来打破。。。所以由你来决定。 最简单的实现是(简单): -用数字替换字符串中的每个字母。 -在字符串中播放字母的ascii值

这里真正的问题是它是否足够好???
从“安全性”的角度来看——绝对不是。

算法有多复杂有什么关系;你不打算自己实现它,是吗?Java有一个非常广泛的库生态系统,您应该首先习惯于咨询。大多数流行的库都是免费的,并且有许可证。这仍然会使文件非常容易阅读。序列化对象时不会对对象数据进行置乱。不用担心,您仍然可以在ObjectOutputStream和FileOutputStream之间放置带有AES密码的CipherOutputStream。对于简单的混淆,使用静态键和ECB编码(以及PKCS5P)。在选择此选项之前,请确保您了解序列化的优点和缺点;e、 g.内部程序结构的变化可能会反映在磁盘上。