密码加密



我使用此代码加密密码

 public static byte[] encrypt(String password) {
        try {
            BASE64Encoder be = new BASE64Encoder();
            MessageDigest md = MessageDigest.getInstance("sha-512");
            md.update(password.getBytes());
            return md.digest();
        } catch (NoSuchAlgorithmException e) {
        }
        return null;
    }

如果我用这个代码来比较密码,它可以完美地

 if (encrypt(passwordField.getText()).compareTo(encrypt("password")) == 0 )
  system.out.print("true")
else *false

我想隐藏我的密码,所以我使用System.out.println(encrypt("Password"))的控制台结果进行比较,所以我的代码看起来像这个

    if (encrypt(passwordField.getText()).compareTo("5sg7KCrrLgIoRFlXIcwAu9pHyyRTfBd5+buE8EA54Wdua6hXPliNoQUlEOOqCjKp5Vh5riKwwtYh/n"+
"NvwKPoX4uw==") == 0 )
          system.out.print("true")
        else *false

它将始终输出false。我不明白为什么。感谢您抽出时间

您应该阅读有关哈希的内容。。。

在散列中,如果你尝试编码一个字符串,每次都说"你好",你会得到不同的输出,尽管你编码的是同一个字符串。。。

试试下面的。。

   for(i=1;i<10;i++)
   System.out.println(encrypt("password"));

你将得到9个不同的结果。。但它们仍然是可比较的

https://en.wikipedia.org/wiki/Cryptographic_hash_function

相关内容

  • 没有找到相关文章

最新更新