Java 區塊鏈BLOCKCHAIN中區塊BLOCK的hash值的計算

來源:互聯網
上載者:User

標籤:java區塊hash   區塊Hash   java區塊鏈   區塊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();    }}

Java 區塊鏈BLOCKCHAIN中區塊BLOCK的hash值的計算

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.