Java 简单加密

Java 简单加密,java,string,encryption,Java,String,Encryption,我正在开发一个游戏,我需要保存一些数据文件来保存受保护的数据,我的目标是没有人能够读取/编辑该文件,我编写了一个简单的字节操作算法: private static final int KEY = 25156; public static String encrypt(String s) { byte[] bytes = s.getBytes(); for (int i = 0; i < bytes.length; i++) bytes[i] = (byte

我正在开发一个游戏,我需要保存一些数据文件来保存受保护的数据,我的目标是没有人能够读取/编辑该文件,我编写了一个简单的字节操作算法:

private static final int KEY = 25156;

public static String encrypt(String s) {
    byte[] bytes = s.getBytes();
    for (int i = 0; i < bytes.length; i++)
        bytes[i] = (byte) (bytes[i] + KEY);
    return new String(bytes);
}

public static String decrypt(String s) {
    byte[] bytes = s.getBytes();
    for (int i = 0; i < bytes.length; i++)
        bytes[i] = (byte) (bytes[i] - KEY);
    return new String(bytes);
}
private static final int KEY=25156;
公共静态字符串加密(字符串s){
byte[]bytes=s.getBytes();
for(int i=0;i
字符串不可读,但我有几个问题:

  • 这能解决我的问题吗
  • 如果没有,还有什么可以解决

  • 我可以推荐XOR加密吗

    编码或解码:

    public static String crypt(String s) {
        byte[] bytes = s.getBytes();
        for (int i = 0; i < bytes.length; i++)
            bytes[i] = (byte) (bytes[i] ^ KEY);
        return new String(bytes);
    }
    

    请注意,您的“key”值将被解释为模256,这意味着它相当于68。这是一个难以置信的简单、不复杂的代码,任何稍有了解的人都可以“破解”。这将阻止天真的用户读取文件,但仅此而已。如果“没有人能够读取/编辑文件”的意思是“没有人能够方便地读取/编辑文件”,那么这将解决您的问题。如果您的意思是“没有人,包括政府安全机构或其他密码专家能够读取/编辑该文件”,那么您需要更复杂的技术。在你的问题中,你能说得更具体一点吗?事实是,如果所有代码/加密密钥都是本地的(我假设它们是本地的),那么坚定的攻击者将能够解密你的文件。如果你想要一个相当不错的算法,那么看看javax.crypto包,它允许你用嵌入代码中的密钥加密数据,这样就有人必须对你的代码进行反编译才能解密。我的问题是我不能拥有非本地密钥,因为每次应用程序打开时,我都需要解密文件,如果密钥是随机生成的,我就无法做到这一点“解决”这个问题的典型方法是使用标准加密算法(大多数平台都内置了相当健壮的加密算法),对于密钥,使用模糊处理过程,基于机器序列或类似的方法生成值。当然,我们经常被提醒“模糊处理不是安全性”,但你可以做你能做的。但是,通过在应用程序启动时要求用户提供密码并将其包含在密钥计算中,您可以对其进行显著改进(使其实际上具有一定的安全性)。刚才检查了xor是关于什么的,我如何在java中实现它?这与他的方案并没有本质上的区别——可能更不安全。
    bytes[i] = (byte) (bytes[i] ^ KEY ^ i ^ bytes.length);