热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java中的SHA512哈希

Java中的SHA-512哈希原文:https://www

Java 中的 SHA-512 哈希

原文:https://www.geeksforgeeks.org/sha-512-hash-in-java/

SHA-2 密码散列函数家族由六个散列函数组成。这些是:


  1. SHA-224,具有 224 位哈希值

  2. SHA-256,具有 256 位哈希值

  3. SHA-384,384 位哈希值

  4. SHA-512,512 位哈希值

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

  6. SHA-512/256, with 512 bit hash values

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

    为了计算 Java 中的加密散列值,使用了包 java.security 下的消息摘要类

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


    • MD2

    • 讯息摘要 5

    • SHA-1

    • SHA-224

    • SHA-256

    • SHA-384

    • SHA-512

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

    示例:

    输入 : hello world
    输出:309 ECC 489 c12d 6 EB 4cc 40f 902 F2 f4d 0 和 77ee 511 7a 7a 9bcd 3ca 86 CD4 f 989 DD 35 BC 5 ff 49670 da 34255 b 45 B0 CFD 830 e 81 f 605 DCF 7 DC 5542 e 93 AE 9

    输入 : GeeksForGeeks
    输出:ACC 10c 4 e 0b 38617 f 59 e 88 e 4925 e 894 afae 5 EC 948 c 2 af 6 f 44903 f 039 f 9 Fe 47 a 9210 e 01d 5 CD 926 c 142 BDC 9179 c 2 ad 30 f 927 a 8 f 69421

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

    ```java
    // 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("\n" + s1 + " : " + encryptThisString(s1));

    String s2 = "hello world";
            System.out.println("\n" + s2 + " : " + encryptThisString(s2));
        }
    }
    ```

    Output:

    ```java
    HashCode Generated by SHA-512 for:

    GeeksForGeeks : acc10c4e0b38617f59e88e49215e2e894afaee5
    ec948c2af6f44039f03c9fe47a9210e01d5cd926c142bdc9179c2ad
    30f927a8faf69421ff60a5eaddcf8cb9c

    hello world : 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee5
    11a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cf
    d830e81f605dcf7dc5542e93ae9cd76f

    ```

    应用:


    • 密码系统

    • 数据完整性




推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
author-avatar
佩刚坤斌冠如_567
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有