gpt4 book ai didi

Java SHA 不工作。哈希值不等于字符串。我的编码有问题吗?

转载 作者:行者123 更新时间:2023-12-02 11:40:46 26 4
gpt4 key购买 nike

基本上我有这个

   if (args.length != 1) {
System.err.println("Usage: java MyMd5 <message>");
System.exit(1);
}
try {
// get message
byte[] message = args[0].getBytes("UTF8");
// create message digest object for MD5
MessageDigest messageDigest = MessageDigest.getInstance("SHA");
// System.out.println("Provider: " +
messageDigest.getProvider().getInfo();
// create message digest
messageDigest.update(message);
byte[] md = messageDigest.digest();
// print result
System.out.println("Message Digest Algorithm: MD5");
System.out.println("Message: " + new String(message));
System.out.println("Message Digest: \"" + new String(md, "UTF8") + "\"");
String HashPassword=new String(md, "UTF8");
System.out.println(HashPassword);
System.out.println(HashPassword.equals("???8p???W?B:??N?~"));

但不知何故,当我尝试比较时,它返回 false。是我的编码有问题吗?谢谢!

    Message Digest Algorithm: MD5 
Message: pass123
Message Digest: "???8p???W?B:??N?~"
???8p???W?B:??N?~
false

最佳答案

问题在于不必要的编码,使用 md5 我们必须以正确的方式对字符串进行编码,而不是使用 UTF8 编码

public static void main(String[] args) throws Exception {
String pass = "pass123";
byte[] message = pass.getBytes();
MessageDigest messageDigest = MessageDigest.getInstance("SHA");
messageDigest.update(message);
byte[] md = messageDigest.digest();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < md.length; i++) {
sb.append(Integer.toString((md[i] & 0xff) + 0x100, 16).substring(1));
}
System.out.println("encoded pass:" + sb.toString());
System.out.println(sb.toString().equals("aafdc23870ecbcd3d557b6423a8982134e17927e"));
}

关于Java SHA 不工作。哈希值不等于字符串。我的编码有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48577861/

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