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

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();
    }
}

原文地址:http://blog.51cto.com/4577390/2108541

时间: 2024-08-06 07:20:50

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

区块链领域中的术语普及

为了进一步了解区块链,我们为感兴趣的初学者提供了一些术语: (1)区块链(Blockchain):区块链是一种分布式分类账,由不可更改的数字化记录的数据组成,称为数据块.然后使用加密签名将每个块"链接"到下一个块.这允许块链像分类帐一样使用,可以由具有适当权限的任何人共享和访问. (2)地址(Addresses):用于在网络上接收和发送事务. (3)比特币(Bitcoin):比特币是一个加密货币,基于POW区块链. (4)分组密码(Block cipher):是一种对文本进行加密(以产

区块链开发中使用的最流行的编程语言

我们目前正处于一个新兴的区块链开发行业中.区块链技术处于初期阶段,然而这种颠覆性技术已经成功地风靡全球,并且最近经历了一场与众不同的繁荣.由于许多资金充足的项目现在急于建立区块链网络并在其上部署分散的应用程序,因此缺乏能力强大的区块链开发人员.随着数十亿人进入这一领域,区块链开发商的薪酬和需求不断升级,项目互相竞标,以吸引留在市场上的最佳区块链人才.这种淘金热可能让一些开发人员怀疑他们是否具备了进入这个行业所需要的东西,特别是在这个新行业中最受追捧的编程语言.几乎所有流行的编程语言都在区块链行业

区块链机遇中暗含迷思,下个BAT来自区块链平台技术

(上图为Gartner研究总监季新苏) 作为下一代全球信用认证和价值互联网基础协议之一,区块链技术近年正逐渐受到国内外政府机关.国际组织和金融机构的重视和关注.放眼国际,全球有24个国家正在大力投资发展区块链技术:90多个国家中央银行已经开始讨论布局和发展区块链技术:目前全球90多个大型跨国公司加入了区块链技术联盟. 而在国内,2017年4月,乌镇智库发布的<中国区块链产业发展白皮书>显示,截至2016年底,中国共有105家区块链相关企业.2016年,中国新增区块链企业数超过美国,占全球新增企

深圳源中瑞区块链技术_区块链数字货币网站交易平台系统开发

深圳源中瑞区块链技术_区块链数字货币网站交易平台系统开发13826558593现代货币从物理属性上区分,货币可分为实物货币和虚拟货币两类,实物货币包括纸币和金属货币,而虚拟货币则包括电子货币和数字货币.从信用属性上区分,货币又可分为法定货币和私有货币两种.自2009年1月比特币区块链上线以来,这个世界上又发明出来一种新型的货币--数字货币.数字货币从物理属性上来看,与电子货币一样也是一串串数字,但数字货币的数字又与电子货币的数字不同,它是由一行行计算机代码组成.法定货币是主权政府信用背书,私有货

Seele元一正式公开第二部黄皮书“区块链网络中消息传播的一种加速方法”

9月5日,Seele元一公开发表第二部黄皮书"区块链网络中消息传播的一种加速方法".当晚,Seele首席科学家毕伟博士在台湾大学Seele全球名校行首站活动中,与台湾大学资讯工程系廖世伟教授.台大学生及校友面对面解读黄皮书内容.继8月10日发表"多重椭圆曲线的数字签名方法"后,为产业而来的Seele元一不断落实系列黄皮书发表计划.传统区块链网络中,扩展区块链的关键问题之一,就是最小化获胜区块传播与次轮竞争启动间的时间间隔.本次公布的第二部黄皮书中对此提出一种新的解决

区块链开发中各个层面的核心技术,源中瑞小六发布

区块链技术----网络层:实现记账节点的去中心化核心技术1.P2P网络:P2P网络(对等网络),又称点对点技术,是没有中心服务器.依靠用户×××换信息的互联网体系.与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能.国内的迅雷软件采用的就是P2P技术.P2P网络其具有去中心化与健壮性等特点. 区块链技术----共识层:调配记账节点的任务负载核心技术2.共识机制:共识机制,就是所有记账节点之间如何达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手

区块链世界中的token究竟是什么?

Token究竟是什么? token的概念很广泛,在计算机领域中,无论是基础的网络架构还是服务系统的身份验证等,都有涉及到token的概念,然而在这里我想阐述的是在区块链世界中的token是什么. 相信对区块链有些了解的朋友,都或多或少的听过或者看过关于token的描述,过去的两年里,被炒的轰轰烈烈的,通过I-C-O方式去募集的那些个玩意儿,都是指的一种token,有人翻译为数字代币,有人称之为是通证,不管怎么说,总之就是被不少人认为是一种有价值的东西,不,应该说被认为是一种有价格的东西. 回想长

区块链开发公司 区块链的未来有多大

区块链(blockchain)本质上是一个分布式账本,其通过去中心化.去第三方信任的方式集体维护一个可靠数据库的技术方案,网络中所有的用户共同在分布式账本上记账与核账,来保证信息的真实性和不可篡改性,与传统的中心式解决方案相比,其最突出的优点是解决了对第三方的信任问题.最早的区块链底层技术来自于比特币,其主要运用了四大技术,分别是哈希运算.数字签名.P2P网络.工作量证明.区块链技术可应用于生活中诸多领域,比如供应链金融.医疗健康.文化传媒.产权认证.捐赠平台等.目前,"区块链"技术仍

区块链扫盲:区块链技术初探(二)

?5. 共识机制 区块链是一种去中心化的分布式账本系统,由于点对点网络下存在较高的网络延迟,各个节点所观察到的事务先后顺序不可能完全一致.因此区块链系统需要设计一种机制对在差不多时间内发生的事务的先后顺序进行共识.这种对一个时间窗口内的事务的先后顺序达成共识的算法被称为"共识机制". 5.1区块链和分布式系统容错的相同点 (1) Append only. (2) 强调序列化(时间有序). (3) 少数服从多数原则. (4) 分离覆盖的问题:即长链覆盖短链区块,多节点覆盖少数节点. 5.