Java常用HASH算法总结【经典实例】

以下是Java常用HASH算法总结【经典实例】的完整攻略。

简介

HASH算法是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。将消息转换为数字指纹,在计算机领域广泛应用。例如,在密码学中,我们可以对原始的密码消息应用哈希函数,得到一个固定长度的哈希值,用于保证数据的完整性和安全性。

常用HASH算法

Java中常用的HASH算法有MD5、SHA1、SHA256等,下面我分别介绍一下这些算法的特点。

MD5算法

MD5(Message-Digest Algorithm 5)是一种不可逆的HASH算法,它对任意长度的信息,通过一种哈希(Hash)函数,将它转换成一个128位的HASH值。MD5主要用于确保信息传输完整一致,例如在软件下载的过程中,下载文件与发布者提供的HASH值对比,就可以判断文件是否被篡改。

下面是Java中使用MD5算法实现字符串加密的示例:

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {
    public static String md5(String input) {
        try {
            // 创建MessageDigest对象
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 更新输入数据
            md.update(input.getBytes());
            // 计算MD5值
            byte[] md5Bytes = md.digest();
            // 将byte[]转换为BigInteger类型
            BigInteger bigInt = new BigInteger(1, md5Bytes);
            // 得到16进制表示的MD5值
            return bigInt.toString(16);
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        String input = "hello world";
        String output = md5(input);
        System.out.println(input + " 的MD5值为:" + output);
    }
}

SHA1算法

SHA1(Secure Hash Algorithm 1)也是一种不可逆的HASH算法,它对任意长度的信息,通过哈希函数,生成一个160位(20字节)的哈希值。SHA1比MD5的安全性更高,但计算速度更慢。SHA1主要用于数字签名和证书颁发机构。

下面是Java中使用SHA1算法实现字符串加密的示例:

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class SHAUtil {
    public static String sha1(String input) {
        try {
            // 创建MessageDigest对象
            MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
            // 更新输入数据
            messageDigest.update(input.getBytes());
            // 计算SHA1值
            byte[] sha1Bytes = messageDigest.digest();
            // 将byte[]转换为BigInteger类型
            BigInteger sha1Int = new BigInteger(1, sha1Bytes);
            // 得到16进制表示的SHA1值
            return sha1Int.toString(16);
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        String input = "hello world";
        String output = sha1(input);
        System.out.println(input + " 的SHA1值为:" + output);
    }
}

SHA256算法

SHA256(Secure Hash Algorithm 256)是SHA2家族之一的哈希算法,它能够产生一个256位的哈希值。与SHA1相比,SHA256更加安全,但也更加耗时。SHA256主要用于数字签名、验证消息完整性等场景。

下面是Java中使用SHA256算法实现字符串加密的示例:

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class SHA256Util {
    public static String sha256(String input) {
        try {
            // 创建MessageDigest对象
            MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
            // 更新输入数据
            messageDigest.update(input.getBytes());
            // 计算SHA256值
            byte[] sha256Bytes = messageDigest.digest();
            // 将byte[]转换为BigInteger类型
            BigInteger sha256Int = new BigInteger(1, sha256Bytes);
            // 得到16进制表示的SHA256值
            return sha256Int.toString(16);
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        String input = "hello world";
        String output = sha256(input);
        System.out.println(input + " 的SHA256值为:" + output);
    }
}

总结

通过上面的示例,我们可以看到Java中常用的HASH算法都比较简单,而且都可以用Java标准库中的MessageDigest类进行实现。在使用HASH算法时,需要注意选择合适的算法,并根据情况适当调整HASH值的位数。这样可以保障数据的安全性和完整性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java常用HASH算法总结【经典实例】 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 如何把本地jar包导入maven并pom添加依赖

    下面是如何把本地jar包导入maven并pom添加依赖的完整攻略: 1. 将本地jar包导入maven仓库 使用本地jar包,我们需要先将其导入maven仓库里面,这样我们才能在pom文件中引用到它。 步骤如下: 打开命令行窗口,进入到本地jar包所在目录 假设本地jar包文件名为example.jar,执行以下命令: shell mvn install:i…

    Java 2023年5月20日
    00
  • java创建一个类实现读取一个文件中的每一行显示出来

    下面是详细的攻略: 创建一个Java类 首先,要在Java中创建一个类来实现读取文件中每一行并显示出来。在这个类中,我们需要使用Java的文件读取API以及循环来逐行读取文件中的内容并将其显示出来。 public class FileReadExample { public static void main(String[] args) { try { //…

    Java 2023年5月19日
    00
  • mysql connector 执行 select 和 shardingshpere-proxy 的处理过程

    use java mysql connector // fake mysql select code // … datasource init Connection conn = datasource.getConnection(); PreparedStatement pst = conn.prepareStatement(“select id, ta…

    Java 2023年4月18日
    00
  • IDEA2019.3配置Hibernate的详细教程(未使用IDEA的自动化)

    下面就为你详细讲解“IDEA2019.3配置Hibernate的详细教程(未使用IDEA的自动化)”。 1. 下载Hibernate框架及其相关依赖 首先,要使用Hibernate框架,你需要先下载Hibernate框架及其相关依赖。可以从官方网站https://hibernate.org/orm/下载最新版的Hibernate框架。另外需要注意的是,Hib…

    Java 2023年5月19日
    00
  • 关于Struts2文件上传与自定义拦截器

    关于Struts2文件上传与自定义拦截器的完整攻略 文件上传 环境配置 在使用Struts2进行文件上传之前,需要进行相关的环境配置。首先需要在struts.xml文件中配置org.apache.struts2.dispatcher.multipart.MultiPartRequest类型的解析器: <constant name="strut…

    Java 2023年5月20日
    00
  • 品味布隆过滤器的设计之美

    布隆过滤器是一个精巧而且经典的数据结构。 你可能没想到: RocketMQ、 Hbase 、Cassandra 、LevelDB 、RocksDB 这些知名项目中都有布隆过滤器的身影。 对于后端程序员来讲,学习和理解布隆过滤器有很大的必要性。来吧,我们一起品味布隆过滤器的设计之美。 1 缓存穿透 我们先来看一个商品服务查询详情的接口: public Prod…

    Java 2023年4月17日
    00
  • java中创建、写入文件的5种方式

    当我们在开发Java应用程序时,可能会遇到需要将数据写入文件的需求,本文将介绍Java中创建、写入文件的5种方式。 1. 使用FileOutputStream和BufferedOutputStream创建和写入文件 使用Java的FileOutputStream和BufferedOutputStream类,我们可以创建和写入文件: import java.i…

    Java 2023年5月19日
    00
  • Spring 代码技巧梳理总结让你爱不释手

    Spring 代码技巧梳理总结让你爱不释手攻略 介绍 Spring是一款开源的,轻量级的Java开发框架。它包含了一系列的工具,使得Java开发更加容易和高效。在本攻略中,我们会总结出一些Spring开发中的常用技巧,以帮助你更加熟悉和熟练地使用Spring。 技巧列表 使用@Autowired简化依赖注入 在Spring中,我们可以使用@Autowired…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部