gpt4 book ai didi

java - SHA1 哈希在 Java 中未按预期工作

转载 作者:行者123 更新时间:2023-12-02 01:43:52 27 4
gpt4 key购买 nike

我正在尝试编写一小段 Java 代码来了解如何正确使用 SHA1。

以下是我想出的代码片段:

package dummyJavaExp;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Exp1 {

public static void main(String[] args) throws NoSuchAlgorithmException {
// TODO Auto-generated method stub
String str = "Hello there";
String hashstr = new String(MessageDigest.getInstance("SHA1").digest(str.getBytes()));
System.out.println("Encrypted value of " + str + " is: " + hashstr);
}

}

但是当我运行上面的代码时,上面的代码给出了一些奇怪的字符,如以下输出消息所示:

Encrypted value of Hello there is: rlvU>?Þ¢‘4ónjòêì\Î

我认为加密的消息将是一些字母数字字符串。

我的代码中是否缺少某些内容?

最佳答案

当您使用String Sample = new String(byte[] bytes)时,它将创建一个具有平台默认字符集的字符串,您的摘要字节可能没有该字符集中的字母数字表示形式。

尝试使用Base64或HexString来显示摘要消息。

例如在JAVA8中:

您可以将摘要字节编码为字符串:

String hashstr = Base64.getEncoder().encodeToString(MessageDigest.getInstance("SHA1").digest(str.getBytes("UTF-8")));

您可以使用以下方式解码 Base64:

byte [] digest = Base64.getDecoder().decode(hashstr); 

关于java - SHA1 哈希在 Java 中未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53993754/

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