常见的hash算法介绍

常见的哈希算法

以下是一些常见的哈希算法:

  1. MD5(Message Digest Algorithm 5):MD5 是一种广泛使用的哈希算法,生成的哈希值为 128 位(16 字节),常用于校验数据的完整性,但由于其存在安全性漏洞,已不适合用于密码存储等安全场景。

  2. SHA-1(Secure Hash Algorithm 1):SHA-1 是一种产生 160 位(20 字节)哈希值的算法。然而,SHA-1 也被证明存在安全性问题,因此在对数据的完整性和安全性要求较高的场景中,不再推荐使用。

  3. SHA-256(Secure Hash Algorithm 256-bit):SHA-256 是 SHA-2 系列中的一种哈希算法,生成的哈希值长度为 256 位(32 字节),具有更高的安全性。SHA-256 在许多领域中被广泛使用,包括密码学、数字证书等。

  4. SHA-3(Secure Hash Algorithm 3):SHA-3 是最新的哈希算法标准,它提供了多个变体,包括 SHA-3-224、SHA-3-256、SHA-3-384 和 SHA-3-512。SHA-3 算法与 SHA-2 系列相比,在设计上有所不同,提供了更好的性能和安全性。

  5. CRC32(Cyclic Redundancy Check):CRC32 是一种循环冗余校验算法,生成的哈希值为 32 位(4 字节),主要用于数据传输或存储校验,以检测数据是否被修改或损坏。

  6. MurmurHash:MurmurHash 是一种快速非加密哈希算法,具有较好的性能和分布特性,适用于哈希表、散列集合等数据结构的实现。

这些是仅列举的一些常见的哈希算法,每种算法都有其特定的应用场景和性能特性。在选择哈希算法时,需要根据具体的需求和安全要求进行权衡和选择。

SHA-256 java代码示例

下面是一个使用 Java 的 MessageDigest 类实现 SHA-256 哈希算法的示例代码:

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class SHA256Example {
    public static void main(String[] args) {
        String input = "Hello, World!";
        String sha256Hash = calculateSHA256(input);
        System.out.println("SHA-256 Hash: " + sha256Hash);
    }

    public static String calculateSHA256(String input) {
        try {
            MessageDigest digest = MessageDigest.getInstance("SHA-256");
            byte[] hash = digest.digest(input.getBytes(StandardCharsets.UTF_8));

            // Convert the byte array to a hexadecimal string
            StringBuilder hexString = new StringBuilder();
            for (byte b : hash) {
                String hex = Integer.toHexString(0xff & b);
                if (hex.length() == 1) {
                    hexString.append('0');
                }
                hexString.append(hex);
            }
            return hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
    }
}

以上代码中,calculateSHA256 方法接受一个字符串输入,并返回其 SHA-256 哈希值。在方法中,我们首先通过 MessageDigest.getInstance("SHA-256") 获取 SHA-256 算法的 MessageDigest 实例。

然后,我们将输入字符串转换为字节数组,并使用 digest 方法计算哈希值。计算后的哈希值是一个字节数组。

接下来,我们将字节数组转换为十六进制字符串表示形式。在循环中,我们将每个字节转换为两位十六进制字符串,并附加到 hexString 变量中。最后,返回完整的十六进制哈希字符串。

在示例中,我们将字符串 “Hello, World!” 的 SHA-256 哈希值计算出来,并打印输出。你可以根据需要将不同的字符串传递给 calculateSHA256 方法来计算对应的 SHA-256 哈希值。

常见的hash算法介绍_hash算法有哪些-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值