gpt4 book ai didi

java - 替换硬编码凭据

转载 作者:行者123 更新时间:2023-11-30 07:43:24 25 4
gpt4 key购买 nike

我构建了一个简单的 Java 应用程序。但是,我不明白如何保护此应用程序以避免反编译器无法泄露的硬编码密码。

登录主程序

import java.util.Scanner;

public class LoginMain {

public static void main(String[] args) {
String Username;
String Password;
Password = "admin";
Username = "admin";
Scanner input1 = new Scanner(System.in);
System.out.println("Enter Username : ");
String username = input1.next();
Scanner input2 = new Scanner(System.in);
System.out.println("Enter Password : ");

String password = input2.next();
if (username.equals(Username) && password.equals(Password)) {
System.out.println("Access Granted! Welcome!");
} else if (username.equals(Username)) {
System.out.println("Invalid Password!");
} else if (password.equals(Password)) {
System.out.println("Invalid Username!");
} else {
System.out.println("Invalid Username & Password!");
}
}
}

LoginNew.java

import java.util.Scanner; 

public class LoginNew {
public static void main(String[] args) {
String Username;
String Password;
Scanner scan = new Scanner (new File("1.txt"));
Scanner input1 = new Scanner(System.in);
System.out.println("Enter Username : ");
String username = input1.next();
Scanner input2 = new Scanner(System.in);
System.out.println("Enter Password : ");
String password = input2.next();

if (username.equals(Username) && password.equals(Password)) {
System.out.println("Access Granted! Welcome!");
} else if (username.equals(Username)) {
System.out.println("Invalid Password!");
} else if (password.equals(Password)) {
System.out.println("Invalid Username!");
} else {
System.out.println("Invalid Username & Password!");
}
}
}

但是,系统向我展示了:

loginNew.java:9: error: cannot find symbol
Scanner scan = new Scanner (new File("1.txt"));
^
symbol: class File
location: class loginNew
1 error
Error: Could not find or load main class loginNew

我使用我的凭据创建了文件 1.txt:密码 = "admin";用户名=“管理员”;简单的东西,但我迷路了。对不起..

最佳答案

通常,密码甚至不会存储在应用程序代码中——它们会根据数据库或其他一些数据源进行验证。但暂时抛开这些担忧......

您问题的答案是使用 one-way hash .即用不可逆的散列函数对密码进行加密。当用户输入密码时,对其进行哈希处理并将其与存储在您的应用程序代码中的哈希值进行比较。 (将 password 变量替换为 passwordHash 变量。)由于无法(轻松)解密哈希,因此它比在应用程序中存储纯文本密码更安全源(或数据库,或您可能存储散列密码的任何其他地方)。

正如其他人提到的那样,加密散列(和应用程序安全性)会很快变得复杂,并且对于初学者来说并不是特别友好。因此,此答案可能会帮助您理解一些概念,但您可能还需要了解更多信息才能确保生产质量的应用程序安全。

关于java - 替换硬编码凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53509181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com