Zwei identische Zeichenfolgen werden nicht verglichen [Duplikat]
Posted: 25 Jan 2025, 10:08
im Allgemeinen aus irgendeinem Grund, wenn ich zwei Zeilen vergleicht, sind sie aus irgendeinem Grund nicht gleich. Es ist sehr schwierig zu erklären, wie sie meiner Meinung nach immer noch gleich sein sollten und die erste Bedingung erfüllt werden sollte. < /p>
Code (Java): < /p>
Ich habe erwartet, dass die Bedingung, die als erstes erfüllt wird, versucht, von Byte in String und umgekehrt zu konvertieren.
Code (Java): < /p>
Code: Select all
import java.security.MessageDigest;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
String login, password;
// password = scanner.next();
System.out.println("Please enter to System!");
System.out.print("Enter login : ");
login = scanner.next();
System.out.print("Enter password : ");
password = scanner.next();
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] login_hash = digest.digest(login.getBytes(StandardCharsets.UTF_8));
login = bytesToHex(login_hash);
byte[] password_hash = digest.digest(password.getBytes(StandardCharsets.UTF_8));
// System.out.println(bytesToHex(password_hash));
if ((String)login == "96cae35ce8a9b0244178bf28e4966c2ce1b8385723a96a6b838858cdd6ca0a1e") {
System.out.println(login + "\n == \n" + "96cae35ce8a9b0244178bf28e4966c2ce1b8385723a96a6b838858cdd6ca0a1e");
System.out.println("Welcome!");
}
if ((String)login != "96cae35ce8a9b0244178bf28e4966c2ce1b8385723a96a6b838858cdd6ca0a1e") {
System.out.println(login + "\n != \n" + "96cae35ce8a9b0244178bf28e4966c2ce1b8385723a96a6b838858cdd6ca0a1e");
}
}
private static String bytesToHex(byte[] hash) {
StringBuilder hexString = new StringBuilder(2 * hash.length);
for (int i = 0; i < hash.length; i++) {
String hex = Integer.toHexString(0xff & hash[i]);
if (hex.length() == 1) {
hexString.append('0');
}
hexString.append(hex);
}
return hexString.toString();
}
}