Java 计算字符串哈希值的几种方案
【摘要】 1. 使用 String 类的 hashCode() 方法Java 的 String 类自带一个 hashCode() 方法,该方法返回一个 int 类型的哈希值。这个哈希值是基于字符串的内容计算得出的。String str = "Hello, World!";int hash = str.hashCode();System.out.println("Hash code: " + hash...
1. 使用 String
类的 hashCode()
方法
Java 的 String
类自带一个 hashCode()
方法,该方法返回一个 int
类型的哈希值。这个哈希值是基于字符串的内容计算得出的。
String str = "Hello, World!";
int hash = str.hashCode();
System.out.println("Hash code: " + hash);
2. 使用 MessageDigest
类进行更复杂的哈希
如果你需要更复杂的哈希(如 MD5、SHA-1、SHA-256 等),可以使用 java.security.MessageDigest
类。这些哈希算法返回的是字节数组,你可以将其转换为十六进制字符串表示,但本质上哈希计算的结果是字节数组。
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class HashExample {
public static void main(String[] args) {
try {
String str = "Hello, World!";
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] hashBytes = md.digest(str.getBytes());
// 将字节数组转换为十六进制字符串(如果需要字符串表示)
StringBuilder hexString = new StringBuilder();
for (byte b : hashBytes) {
String hex = Integer.toHexString(0xff & b);
if (hex.length() == 1) hexString.append('0');
hexString.append(hex);
}
System.out.println("SHA-256 Hash: " + hexString.toString());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
}
总结
String.hashCode()
返回一个int
类型的哈希值。- 使用
MessageDigest
可以计算更复杂的哈希(如 MD5、SHA-256),返回字节数组,可以转换为十六进制字符串表示。
如果你只需要一个简单的整数哈希值,String.hashCode()
是一个直接且方便的选择。如果你需要更安全的哈希(如用于密码存储),则应使用 MessageDigest
或类似的库来计算更复杂的哈希。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)