Java 区块链BLOCKCHAIN中区块BLOCK的hash值的计算

2023-10-26

Java 区块链中区块的hash值的计算

计算方法有多种,如,可以直接String拼接,也可以用stringbuffer,或者stringbuilder 。这里采用了速度较快的stringbuilder,自己编程的时候可采用stringbuffer。
其中index是区块BLOCK的索引,timestamp是区块BLOCK的时间戳,data是区块BLOCK内包含的数据,nonce为该区块的难度系数。总体计算代码如下:

 /**
     * 计算hash服务
     * @param index 索引
     * @param previousHash 前一个区块的hash值
     * @param timestamp 时间戳
     * @param data 数据
     * @param nonce 难度系数
     * @return 当前hash
     */
    private String calculateHash(int index, String previousHash, long timestamp, String data,long nonce) {
        StringBuilder builder = new StringBuilder(index);
        builder.append(previousHash).append(timestamp).append(data).append(nonce);
        return CryptoUtil.getSHA256(builder.toString());
    }

Java区块链中SHA-256算法的简单实现

java 的SHA-256工具类的实现,用jdk自带工具MessageDigest.getInstance("SHA-256");

package cn.wenwuyi.blockchain.util;

import java.security.MessageDigest;

/**
 * 
 * 类名:CryptoUtil.java
 * 描述:TODO
 * 时间:2018年3月12日 下午7:06:04 
 * @author cn.wenwuyi
 * @version 1.0
 */
public class CryptoUtil {
    private CryptoUtil() {
    }

    public static String getSHA256(String str) {
        MessageDigest messageDigest;
        String encodeStr = "";
        try {
            messageDigest = MessageDigest.getInstance("SHA-256");
            messageDigest.update(str.getBytes("UTF-8"));
            encodeStr = byte2Hex(messageDigest.digest());
        } catch (Exception e) {
            System.out.println("getSHA256 is error" + e.getMessage());
        }
        return encodeStr;
    }

    private static String byte2Hex(byte[] bytes) {
        StringBuilder builder = new StringBuilder();
        String temp;
        for (int i = 0; i < bytes.length; i++) {
            temp = Integer.toHexString(bytes[i] & 0xFF);
            if (temp.length() == 1) {
                builder.append("0");
            }
            builder.append(temp);
        }
        return builder.toString();
    }
}

转载于:https://blog.51cto.com/4577390/2108541

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 区块链BLOCKCHAIN中区块BLOCK的hash值的计算 的相关文章

随机推荐

  • 用非阻塞的 socket connect

    呵呵 原来有人碰到跟我一样的问题 引用如下 这是网址 http cache baidu com c m 9f65cb4a8c8507ed4fece763104c8c711923d030678197027fa3c215cc79031c1d3a
  • pycharm中不能使用anaconda中包含的库的解决办法

    参考在pycharm中使用Anaconda之后 自己记录下来 防止以后找不到 1 打开pycharm 2 选择菜单栏中的file 文件 中的settings 设置 找到project后 选中project interpreter 点击右边的
  • Android读取设备内存大小

    获取系统运行内存 RAM 大小 public static String getRAMTotalMemorySize final Context context 获得ActivityManager服务的对象 ActivityManager
  • python新手怎么兼职-自学python可以做什么兼职

    很多朋友都会说 我身边有朋友或者同学是做程序员的 但是他们具体的工作内容 其实很多人是不了解的 这几年随着一些影视作品的出现 里面的主演有的从事开发工程师 大家初步有了一个印象 如果我不想去公司坐班 自己通过这个技能怎么来赚钱 推荐学习 P
  • 解决Unreal Engine 4.7.6的DerivedDataCache在C盘疯狂膨胀的问题

    打开 YourEngineFolder Engine Config BaseEngine ini 将 1 Local Type FileSystem ReadOnly false Clean false Flush false PurgeT
  • cnpm安装步骤

    安装nodeJS 官网下载 http nodejs cn download 选择其他版本下载地址 https nodejs org zh cn download releases 选版本点击下载 然后下载后缀名为msi 因为安装简单 选择好
  • 推荐学习方法——费曼技巧,以教促学,教学相长

    1 说到费曼技巧先来了解一下费曼这个人 费曼 全名理查德 费曼 美国著名物理学家 于1965年获得诺贝尔物理奖 在沉迷于美妙的物理世界的同时 他还热衷于教育事业 喜欢向人们深入浅出的讲解艰深的物理知识 在他的自传里 他提到曾纠结于某篇艰深的
  • java的反射机制

    Java的反射机制 1 定义 指程序可以访问 检测并修改本身的状态或行为的一种能力 并能根据自身行为的状态和结果调整或修改应用所描述行为的状态和相关的语义 简单来说 就是一种能自我修正的机制 2 意义 首先 反射机制极大的提高了程序的灵活性
  • 如何开启VT方法

    第 步 进入BOIS 重启电脑后 屏幕刚亮 笔记本一般快速按F1或F12 台式一般按DEL键 多按几下 成功后 会进入BIOS设置页面 第 步 找到 Intel Virtualization Technology 把 Disabled 修改
  • 跨平台方案Flutter入门——开发环境搭建

    目录 系统配置要求 获取 Flutter SDK 配置环境变量 安装 Android Studio 运行 flutter doctor 1 Anroid 的 SDK 路径 2 许可未同意 Android Studio 安装插件 Androi
  • 快来动手训练属于自己的聊天机器人吧!

    活动时间 北京时间2023年3月16日15 00 17 00 活动形式 在线直播 动手训练营 动手实践 使用 Amazon SageMaker 构建基于开源 GPT J 模型的对话机器人应用 难度 入门 时间 20 分钟 开发者可以使用 A
  • Python 遇到的问题

    目录 问题1 Pycharm 项目中 Cannot find declaration to go to 问题2 TypeError list indices must be integers or slices not tuple
  • 【C++】继承

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 继承的概念 二 被继承成员访问方式的变化 三 赋值兼容
  • 详解不带参数的 Math.max() 返回 -Infinity

    Math max 是内置的 JavaScript 函数 从给定的一组数字中返回最大值 其语法如下 Math max value1 value2 例如 让我们从 1 2 以及 3 中找到最大的数字 Math max 1 2 3 gt 3 正如
  • [架构之路-199] - 可靠性需求与可靠性分析:鱼骨图、故障树分析法FTA、失效模式与影响DFMEA,找到影响故障的主要因素

    目录 引言 第1章 故障树分析法与鱼骨图的比较 1 1 相同点 1 2 区别点 第2章 鱼骨图 第3章 故障树 3 1 示意图 3 2 故障树解读 3 3 故障树常见符号 第4章 产品失效 Failure 模式分析DFMEA 引言 目标系统
  • git The following paths are ignored by one of your .gitignore files: Use -f if you really want to ad

    git 右键或者命令add 文件或目录 不允许提交 提示 The following paths are ignored by one of your gitignore files Use f if you really want to
  • msvcp140.dll重新安装的解决方法(一键安装方法)

    msvcp140 dll电脑文件中的dll文件 即动态链接库文件 若计算机中丢失了某个dll文件 就会导致某些软件和游戏等程序无法正常启动运行 并且导致电脑系统弹窗报错 其安装方法 1 打开浏览器输入 dll修复程序 site 并下载安装m
  • 计算机二级准考证打印通道,2019年9月计算机二级准考证打印快速入口

    2019年9月份为全国计算机等级考试时间 各省从9月11日起陆续开始打印准考证 考生与9月8日起登入打印入口进行打印 考点报名者在考点领取即可 下面我们快来看看北京 上海 陕西 吉林等各省市的打印时间和打印入口在哪 1 各省计算机二级准考证
  • Redis 7 第九讲 微服务集成Redis 应用篇

    Jedis 理论 Jedis是redis的java版本的客户端实现 使用Jedis提供的Java API对Redis进行操作 是Redis官方推崇的方式 并且 使用Jedis提供的对Redis的支持也最为灵活 全面 不足之处 就是编码复杂度
  • Java 区块链BLOCKCHAIN中区块BLOCK的hash值的计算

    Java 区块链中区块的hash值的计算 计算方法有多种 如 可以直接String拼接 也可以用stringbuffer 或者stringbuilder 这里采用了速度较快的stringbuilder 自己编程的时候可采用stringbuf