我正在制作登录系统,在您注册时使用加密器 存储一个加密密码,然后在登录时解密 制作,并最终将与用于登录的用户进行比较,看看是否可以 比赛。 我存储凭据的方式是:
如何让文件阅读器只读第3行? 语言是Java,这都是在JFrame表单中完成的。
提前感谢您的时间。
答案 0 :(得分:1)
最好的办法是为每个部分分配一些字节。例如,如果为用户名分配50个字符,电子邮件分配50个字符,密码分配50个字符,则可以执行以下操作:
File f = ...;
FileReader reader = new FileReader(f);
fin.skip(100);
char[] chars = new char[50];
int numCharsRead = fin.read(chars); //confirm numCharsRead is 50
答案 1 :(得分:1)
如何让文件阅读器只读第3行?
你做不到。基本上,读者需要读取所有行,忽略它不感兴趣的行。
提示:看BufferedReader.readLine()
;请参阅@ noscreename的回答。
(FileReader
无法做到这一点的原因是,在您完全阅读之前,您不知道每行的时长。由于使用Reader.skip(...)
或RandomAccessFile.seek(...)
要求你知道要跳过多少字节/字符,它们在这里不适用。)
然而,你在这里想做的是一个坏主意。
每次要对用户进行身份验证时,从文件中按顺序读取“记录”不会扩展。您拥有的帐户越多,登录所需的时间就越长。
将密码以明文形式存储在文件中是不好的安全措施。存储在文件中加密的密码几乎一样糟糕。相反,你应该存储种子密码哈希值;请参阅salt上的维基百科页面。
答案 2 :(得分:0)
String file = "your_file_path";
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String password = "";
boolean end = false;
try {
while (true) {
reader.readLine();
reader.readLine();
password = reader.readLine();
// do stuff with password
}
} catch (EOFException e) {
// end of file reached. will break the loop
} catch (IOException e) {
// handle exceptions
} finally {
reader.close();
}