【日常记录-Java】SHA-256签名应用

news2024/9/9 7:26:49
Author:赵志乾
Date:2024-07-29
Declaration:All Right Reserved!!!

1. 简介

        SHA-256(Secure Hash Algorithm 256-bit)是一种广泛使用的密码学哈希函数,其能够将任意长度的数据转换成固定长度(256位,即32字节)的哈希值,通常以64个十六进制数的形式呈现。该算法因高安全性和广泛的应用领域而备受推崇,工作原理如下:

  • 数据预处理:将原始数据转换为位字符串,并进行填充(先在数据末尾添加一个1,然后填足够的0),确保数据长度对512取模后的余数位448,之后在数据末尾附加一个64位的表示原始数据长度的二进制数;
  • 分组处理:将预处理后的数据分为多个512位的分组,对每个分组进行一系列处理;
  • 哈希值生成:通过一系列迭代和压缩操作,逐步生成最终的256位哈希值;

2. 代码示例

public static String generateSHA256(String input) {  
    try {  
        // 创建一个MessageDigest实例,初始化为SHA-256算法对象  
        MessageDigest md = MessageDigest.getInstance("SHA-256");  
        // 使用指定的字节更新摘要,这里需要指定字符集编码,默认为平台默认字符集  
        md.update(input.getBytes(StandardCharsets.UTF_8));  
        // 完成哈希计算,得到结果  
        byte[] digest = md.digest();  
  
        // 将得到的字节转换成十六进制字符串  
        StringBuilder hexString = new StringBuilder();  
        for (byte b : digest) {  
           String hex = Integer.toHexString(0xff & b);  
           if (hex.length() == 1) hexString.append('0');  
              hexString.append(hex);  
           }  
  
           return hexString.toString();  
     } catch (NoSuchAlgorithmException e) {  
        throw new RuntimeException(e); 
     }  
}  

3. 应用场景

        SHA-256可用于数据防篡改,若对数据增加密钥后再做运算,可近似起到数字签名效果。代码如下:

public static void main(String[] args) {  
    String key = "密钥";
    String originalString = "原始数据串";  
    String sign= "你预期的SHA-256哈希值";
  
    // step1: 增加第三方位置的密钥
    originalString  += key;
    // step2: 字符串的SHA-256哈希值  
    String calculatedSHA256 = generateSHA256(originalString);  
  
    // step3: 进行验签  
    if (calculatedSHA256.equals(sign)) {  
        System.out.println("验签成功,数据未被篡改");  
    } else {  
        System.out.println("验签失败,数据可能被篡改");  
    }  
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1963370.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Selenium与WebDriver:Errno 8 Exec格式错误的多种解决方案

概述 在使用Selenium和WebDriver进行网页自动化时,可能会遇到各种错误。其中一个常见问题是执行格式错误(Errno 8 Exec format error)。这个错误通常在运行ChromeDriver时出现,错误提示涉及路径中的某个文件,如THIRD_…

WordPress建站教程:零基础新手小白如何B2B外贸建站

如果你想通过独立站拿询盘获取订单,那么必须先要有一个自己的网站,所以建站是你绕不过去的一件事。对于零基础的新手小白来说,如何从零开始搭建一个B2B外贸网站呢?本文将为你提供一份详细的WordPress建站教程,帮助你从…

NodeJS云观影应用系统-计算机毕业设计源码60580

摘 要 随着互联网与移动互联网迅速普及,网络上的电影娱乐信息数量相当庞大,人们对获取感兴趣的电影娱乐信息的需求越来越大,个性化的基于Vue框架实现云观影应用系统成为一个热门。然而电影信息的表示相当复杂,因此需要开发一个基于Vue框架实…

Navicat for MySQL 17 实现更明智的业务决策

5 月 12 日,Navicat 对现有产品进行了几项重大更新,包括 Navicat Premium、Navicat BI 和 Navicat Data Modeler。最受欢迎的 Navicat 工具之一,Navicat for MySQL,也得到了新的更新,获得了许多与 Navicat Premium 相同…

PostgreSQL——查询扫描介绍

顺序扫描 概述 顺序扫描(Sequential Scan)是PostgreSQL中一种基本的数据检索方式,它通过按顺序读取表中的所有页面来查找满足查询条件的记录。这种方式不依赖于索引,因此在某些情况下可能是唯一的选择,尤其是当表没有…

熵权法确定权重

熵权法(Entropy Weight Method, EWM)是一种在综合考虑各因素提供信息量基础上计算综合指标的数学方法,属于客观综合定权法,在确定权重时更有说服力。该方法主要根据各指标传递给决策者的信息量大小来确定权重。在信息论中&#xf…

AIGC diffusers文生图模型optimum量化使用案例

参考: https://github.com/huggingface/blog/blob/main/quanto-diffusers.md 安装 pip install optimum-quanto %pip install optimum使用 from optimum.quanto import freeze, qfloat8, quantize from diffusers import PixArtSigmaPipeline import torchpipeline = PixArt…

离线安装部署docker,内网离线安装部署docker,以及docker常用命令

1.下载docker的离线安装包 链接: https://pan.baidu.com/s/1beDBIYw-8IjJj5syGnHiZA 提取码: 8888 复制这段内容后打开百度网盘手机App,操作更方便哦 2.将二进制文件:docker-20.10.19.tgz 拖入服务器目录/home/admin/解压 tar -zxvf docker-20.10.19.…

喜讯 华焰天下荣获绿色低碳诚信企业、碳中和承诺示范单位、信用评价 AAA 级信用企业等系列证书

在推动可持续发展和构建诚信商业环境的道路上,华焰天下再次传来令人振奋的消息!近日,华焰天下凭借其在绿色低碳领域的卓越表现、坚定不移的碳中和承诺以及高度可靠的信用体系,成功荣获绿色低碳诚信企业、碳中和承诺示范单位、信用…

无人机技术已应用至地理测绘,Infortrend存储助力测绘数据

--高扩展保存海量无人机数据,高性能支持快速调取建模,数据安全也有免费的备份功能,实实在在好用的存储设备。

智能合约中approve函数详解

场景 这段时间很多小伙伴加我、都咨询到了一个类似的业务场景、 如下: 1、第一步业务里面调用授权函数approve 、给指定address2、第二步是由授权的address调用transferFrom转移给指定的接受地址。 案例DEMO如下(这里test2肯定是会执行失败的&#xff…

C语言典型例题19

《C程序设计教程(第四版)——谭浩强》 例题2.7 检查浮点型数据的舍去误差 C语言知识: 浮点数在C语言用有两个类型,有float和double类型,其中double类型的数据精度更高 解题思路: 可以将一个double类型的…

城市运管服平台:智慧城市的神经中枢

“城市运行管理服务平台”(简称“城市运管服平台”)作为现代城市治理的智慧核心,正以前所未有的方式重塑着城市管理与服务的面貌。本文旨在深度解析城市运管服平台的内涵、运作机制及其对推动智慧城市发展的重要意义。 城市运管服平台&#…

视频超压缩保持质量 ffmpeg

参考: https://x.com/mortenjust/status/1817991110544744764 基于 FFMpeg 的 H264 压缩标准,实现压缩 90% 的视频大小 在线体验地址: https://tools.rotato.app/compress ffmpeg命令执行 ffmpeg -i "C:\Users\loong\Downloads\屏幕录…

Vidu视频生成工具全球上线,注册即刻体验

生数科技,这家成立于2023年3月的年轻企业,其核心团队成员来自清华大学人工智能研究院。首席科学家朱军教授,曾在贝叶斯机器学习和多模态大模型领域取得多项原创性成果。Vidu的核心技术U-ViT架构,是全球首个将Diffusion与Transform…

# mongodb_基础到进阶 -- MongoDB 快速上手(四)

mongodb_基础到进阶 – MongoDB 快速上手(四) 一、MongoDB :文章评论 需求&表结构&技术选型 1、文章评论:需求分析 1)参考某头条的文章评论业务,文章示例参考:早晨空腹喝水&#xff…

功能强大的图片/pdf识别成文字的工具Umi-OCR

一、工具概述 操作系统:支持windows、Linux使用方法:图形化、命令行、http接口 二、功能特性 三、部署方式 1、windows 下载地址:Umi-OCR_文字识别工具 2、linux 推荐使用docker部署 》下载 Dockerfile mkdir Umi-OCR-Docker cd Umi-OC…

Overlay网络

Overlay 介绍 Overlay网络是将已有的物理网络(Underlay网络)作为基础,在其上建立叠加的逻辑网络,实现网络资源的虚拟化。 传统网络带来了以下一些问题: ● 虚拟机规模受 网络规格限制在传统二层网络环境下&#xff0…

某“新一线城市“前端面试,纯纯被恶心到了

一.起因 在boss上刷到的一个小小厂,收大四全年实习生(web前端),因为离家乡比较近,而且双非一本的学历以及入坑的时间没有太长(前端部分不到一年),想去那里看看形势,要求是笔试面试,当场给是否录用结果&…

WPS@文字文档插入的表格,对单元格填充底纹颜色时,有字的地方就填充不上 ,空白。

背景 在创建的WPS文字文档中,插入了一个表格,对表格的某些单元格需要填充底纹颜色 问题 问题如标题,“文字文档插入的表格,对单元格填充底纹颜色时,有字的地方就填充不上 ,空白”,直观如下图 解…