Java实现SHA1加密代码实例

Java实现SHA1加密代码实例

什么是SHA1加密

SHA1 (Secure Hash Algorithm 1)是一种被广泛使用的密码散列函数,经常用于数据验证和加密技术中。SHA1将任意大小的数据(输入)映射到固定大小的数据(输出),通常为160位的二进制值。SHA1加密算法在现代密码学里面被广泛应用,SHA1计算出来的摘要信息是不可逆的。

怎么用Java实现SHA1加密

Java提供了MessageDigest类用于实现SHA1加密操作。

主要步骤如下:

  1. 获取MessageDigest实例
  2. 将需要加密的数据传入MessageDigest实例
  3. 调用MessageDigest的digest()方法获取计算得到的摘要信息
  4. 将计算得到的摘要信息转成16进制或者64进制字符串形式

代码示例

示例1:SHA1加密字符串

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Sha1Util {

    public static String sha1(String str) {
        MessageDigest md = null;
        try {
            md = MessageDigest.getInstance("SHA-1");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        md.update(str.getBytes());
        byte[] digest = md.digest();

        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < digest.length; i++) {
            int b = digest[i] & 0xff;
            if (b < 0x10) {
                sb.append('0');
            }
            sb.append(Integer.toHexString(b));
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        String str = "hello world";
        String sha1Str = sha1(str);
        System.out.println(sha1Str);
    }
}

输出结果:

2ef7bde608ce5404e97d5f042f95f89f1c232871

示例2:SHA1加密文件

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class FileSha1Util {

    public static String sha1(File file) {
        MessageDigest md = null;
        DigestInputStream dis = null;
        try {
            md = MessageDigest.getInstance("SHA-1");
            dis = new DigestInputStream(new FileInputStream(file), md);

            byte[] buffer = new byte[1024 * 1024];
            while (dis.read(buffer) > 0) ;

            byte[] digest = md.digest();

            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < digest.length; i++) {
                int b = digest[i] & 0xff;
                if (b < 0x10) {
                    sb.append('0');
                }
                sb.append(Integer.toHexString(b));
            }
            return sb.toString();
        } catch (NoSuchAlgorithmException | IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (dis != null) {
                    dis.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    public static void main(String[] args) {
        File file = new File("test.txt");
        String sha1Str = sha1(file);
        System.out.println(sha1Str);
    }
}

输出结果:

c9b468d884d18ad7707741a6f9b0b16fdf33d527

总结

通过上面的示例代码,我们可以看到,使用Java实现SHA1加密是非常简单的。只需要使用MessageDigest类进行实例化,并调用相应的方法即可得到SHA1加密后的结果。

阅读剩余 63%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现SHA1加密代码实例 - Python技术站

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

相关文章

  • Struts2拦截器登录验证实例

    下面是“Struts2拦截器登录验证实例”的完整攻略。 1. 确认需求 首先,我们需要明确需求,即需要在 Struts2 项目中添加登录验证功能。具体来说就是,用户在访问某些敏感页面时,必须先登录才能查看。 2. 创建登录页面和验证页面 第二步,我们需要创建登录页面和验证页面。在登录页面中,需要输入用户名和密码,然后提交表单。在验证页面中,需要根据提交的用户…

    Java 2023年5月20日
    00
  • Java如何定义Long类型

    Java 中的 Long 类型表示的是一个 64 位的有符号整数,其取值范围为 -2^63 到 2^63-1。 在 Java 中定义 Long 类型可以使用以下两种方式: 1. 直接使用 long 类型的字面量 可以直接定义一个 long 类型的变量,使用 L 或者小写 l 后缀来确保该变量是 Long 类型: long maxValue = 9223372…

    Java 2023年5月26日
    00
  • Java 仿天猫服装商城系统的实现流程

    Java 仿天猫服装商城系统的实现流程 概述 Java 仿天猫服装商城系统是一种基于Java语言实现的电商系统,主要用于展示服装商品,实现用户注册、登录、购物车、订单等基本功能的实验项目。在本文中,将详细介绍Java 仿天猫服装商城系统的实现流程。 技术栈 Java 仿天猫服装商城系统的实现需要掌握以下技术栈: Spring Boot:Java框架,用于快速…

    Java 2023年5月24日
    00
  • 使用Java8进行分组(多个字段的组合分组)

    使用Java8进行分组的完整攻略如下: 准备数据 首先要确保有可用的数据。以下是一个示例数据集: List<Order> orders = Arrays.asList( new Order("A001", BigDecimal.valueOf(100), "2021-01-01", "User1&…

    Java 2023年5月26日
    00
  • Java webSerivce的使用看完你就明白了

    下面是一个完整的攻略,帮助你了解和使用Java Web Service。 Java Web Service 的使用看完你就明白了 什么是 Java Web Service Java Web Service 是一种基于 XML 和 HTTP 协议的远程服务技术,它允许应用程序在不同操作系统、不同编程语言和不同的硬件平台上进行交互和通信。 Java Web Se…

    Java 2023年5月27日
    00
  • Java SpringBoot拦截器详解

    Java Spring Boot拦截器详解 在Java Spring Boot应用程序中,拦截器是一种非常有用的机制,可以帮助我们在请求到达控制器之前或之后执行一些操作。本文将详细讲解Java Spring Boot拦截器的使用方法和示例。 步骤一:创建拦截器 我们需要创建一个拦截器类来实现拦截器。以下是一个示例: @Component public cla…

    Java 2023年5月15日
    00
  • java中List对象列表实现去重或取出及排序的方法

    当我们在进行Java编程时,经常会涉及到对List对象列表进行去重、取出特定元素以及排序等操作。下面就为大家介绍一些Java中对List对象列表进行去重、取出及排序的方法: 实现List对象列表去重的方法 方法一:通过HashSet去重 List<String> list = new ArrayList<>(); list.add(&…

    Java 2023年5月26日
    00
  • java实现投票程序设计

    Java实现投票程序设计攻略 1. 了解需求 在实现投票程序之前,我们需要明确一下需求。例如: 需要设计投票选项,可以通过界面展示 需要统计投票信息,包括投票人数和每个选项的得票数 需要控制每个人只能投一次票 需要友好的界面和交互逻辑 2. 设计数据结构 针对以上需求,我们可以先设计出如下的数据结构: public class Option { privat…

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