我有一个密码保险库程序,它使用下面的XOR密码在文本文件中存储用户名和密码。每行包含一个用户名和密码对,并用逗号分隔,因此它遵循以下格式:
用户名,密码
用户名,密码
等
问题在于密码偶尔会将字符加密为逗号,因此当我再次尝试读取文件时,数据将被不正确地读取并且基本上会被删除。
我正在考虑通过检查是否有来自XOR密码的逗号来解决这个问题,如果是,则将其增加到下一个ascii字符“ - ”,然后在读取数据和解密时将其返回到逗号它。我在这个解决方案中看到的问题是,它可能会导致与加密到“ - ”的字符发生冲突。
有人能想到我可以用来防止数据丢失的解决方案吗?
// XOR cipher
public static String encryptDecrypt(String input, String pass) {
char[] key = pass.toCharArray();
StringBuilder output = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
output.append((char) (input.charAt(i) ^ key[i % key.length]));
}
return output.toString();
}
答案 0 :(得分:0)
尝试使用DataOutputStream.writeUTF()将文本输出到文件,而不是将它们存储在文本文件中。然后,您可以使用DataInputStream.readUTF()从文件中读取。您不必以这种方式划分任何内容