SCM液压动力单元

Java 中的 SHA-512 哈希

添加时间:2022-03-06 22:37:12

SHA-2 系列加密散列函数由六个散列函数组成。这些是:


SHA-224,具有 224 位哈希值

SHA-256,具有 256 位哈希值

SHA-384,具有 384 位哈希值

SHA-512,具有 512 位哈希值

SHA-512/224,具有 512 位哈希值

SHA-512/256,具有 512 位哈希值

其中,SHA-256 和 SHA-512 是最普遍接受和使用的哈希函数,分别使用 32 位和 64 位字计算。SHA-224 和 SHA-384 分别是 SHA-256 和 SHA-512 的截断版本,使用不同的初始值计算。


为了在 Java 中计算加密哈希值,使用了java.security包下的MessageDigest 类。


MessagDigest 类提供以下加密哈希函数来查找文本的哈希值,如下所示:


MD2

MD5

SHA-1

SHA-224

SHA-256

SHA-384

SHA-512

这些算法在名为getInstance()的静态方法中初始化。选择算法后,计算消息摘要值并将结果作为字节数组返回。BigInteger 类用于将生成的字节数组转换为其符号表示。然后将此表示转换为十六进制格式以获得预期的 MessageDigest。


例子:


输入:hello world

输出:309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76ff


输入:GeeksForGeeks

输出:acc10c4e0b38617f59e88e49215e2e894afaee5ec948c2af6f44039f03c9fe47a9210e01d5cd926c142bdc9179c2ad30f927a8faf69421ff60a5eaddcf8cb9c


程序:下面的程序显示了 SHA-512 哈希函数的实现:



// Java program to calculate SHA-512 hash value

  

import java.math.BigInteger;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

  

public class GFG {

    public static String encryptThisString(String input)

    {

        try {

            // getInstance() method is called with algorithm SHA-512

            MessageDigest md = MessageDigest.getInstance("SHA-512");

  

            // digest() method is called

            // to calculate message digest of the input string

            // returned as array of byte

            byte[] messageDigest = md.digest(input.getBytes());

  

            // Convert byte array into signum representation

            BigInteger no = new BigInteger(1, messageDigest);

  

            // Convert message digest into hex value

            String hashtext = no.toString(16);

  

            // Add preceding 0s to make it 32 bit

            while (hashtext.length() < 32) {

                hashtext = "0" + hashtext;

            }

  

            // return the HashText

            return hashtext;

        }

  

        // For specifying wrong message digest algorithms

        catch (NoSuchAlgorithmException e) {

            throw new RuntimeException(e);

        }

    }

  

    // Driver code

    public static void main(String args[]) throws NoSuchAlgorithmException

    {

  

        System.out.println("HashCode Generated by SHA-512 for: ");

  

        String s1 = "GeeksForGeeks";

        System.out.println(" " + s1 + " : " + encryptThisString(s1));

  

        String s2 = "hello world";

        System.out.println(" " + s2 + " : " + encryptThisString(s2));

    }

}

输出:

由 SHA-512 生成的 HashCode 用于:


GeeksForGeeks : acc10c4e0b38617f59e88e49215e2e894afaee5

ec948c2af6f44039f03c9fe47a9210e01d5cd926c142bdc9179c2ad

30f927a8faf69421ff60a5eaddcf8cb9c


你好世界:309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee5

11a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cf

d830e81f605dcf7dc5542e93ae9cd76f

应用:


密码学

数据的完整性


来源: