在 Java 中,密码一般使用字符串类型来表示。字符串是 Java 中最常用的数据类型,它可以表示任意长度的文本信息,因此可以用来表示密码。
Java 中的字符串是不可变的,也就是说一旦创建了字符串,它的内容就不能被改变。这样就能保证密码在传输过程中不会被泄露或者被修改。
Java 还提供了一些特殊的加密方法来保证密码的安全性。例如,Java 提供了 MessageDigest 类来生成数字摘要(即加密后的字节数组),这样就能够保证密码在传输过程中不会被泄露出去。
MessageDigest md = MessageDigest.getInstance("MD5"); // 创建一个MD5加密实例 byte[] digest = md.digest(password.getBytes()); // 对password进行加密 String encryptedPassword = new String(digest); // 获得加密后的字节数组并将其转化为字符串
此外,Java 还提供了 SecureRandom 类来生成随机数,这样就能够避免使用相同的明文密文来表征相同的密文。SecureRandom 的使用方法如下所示:
SecureRandom random = new SecureRandom(); // 创建一个SecureRandom实例 byte[] salt = new byte[16]; // 创建一个16位长度的salt random.nextBytes(salt); // 生成随机salt String encryptedPassword = new String(salt); // 获得随机salt并将其转化为字符串
PasswordField用于密码输入。用户键入的字符通过显示回显字符串被隐藏。
以下代码使用来自PasswordField类的默认构造函数创建一个密码字段,然后为密码字段设置提示消息文本。提示消息在字段中显示为灰色文本,并为用户提供该字段是什么的提示,而不使用标签控件。
PasswordField passwordField = new PasswordField(); passwordField.setPromptText("Your password");
PasswordField类有setText方法来为控件设置文本字符串。对于密码字段,指定的字符串由echo字符隐藏。默认情况下,echo字符是一个点。
密码字段中的值可以通过getText方法获取。
密码字段和操作侦听器
import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.PasswordField; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.stage.Stage; public class Main extends Application { final Label message = new Label(""); @Override public void start(Stage stage) { Group root = new Group(); Scene scene = new Scene(root, 260, 80); stage.setScene(scene); stage.setTitle("Password Field Sample"); VBox vb = new VBox(); vb.setPadding(new Insets(10, 0, 0, 10)); vb.setSpacing(10); HBox hb = new HBox(); hb.setSpacing(10); hb.setAlignment(Pos.CENTER_LEFT); Label label = new Label("Password"); final PasswordField pb = new PasswordField(); pb.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { if (!pb.getText().equals("abc")) { message.setText("Your password is incorrect!"); message.setTextFill(Color.web("red")); } else { message.setText("Your password has been confirmed"); message.setTextFill(Color.web("black")); } pb.setText(""); } }); hb.getChildren().addAll(label, pb); vb.getChildren().addAll(hb, message); scene.setRoot(vb); stage.show(); } public static void main(String[] args) { launch(args); } }
上面的代码生成以下结果。
Java日期时间 -Java偏移日期时间偏移时间OffsetTime表示具有相对于UTC的固定区偏移的时间。OffsetTime组合LocalTime和ZoneOffset...
Java日期时间调整器我们可能要将日期和时间调整为该月的第一个星期一或下一个星期二。我们可以使用 TemporalAdjuster 界面来调整...
Java日期时间 -Java预定义日期时间格式预定义格式化程序在DateTimeFormatter 类中定义为常量。BASIC_ISO_DATE格式并解析日期,而...
Java日期时间 -Java遗留日期日历Date类的一个对象存储自1970年1月1日午夜时代起经过的毫秒数。 并表示时间的瞬间。Date类默认构...