当前位置:   article > 正文

Java 区块链BLOCKCHAIN中区块BLOCK的hash值的计算_通过blockchain计算哈希值

通过blockchain计算哈希值

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

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

  1. /**
  2. * 计算hash服务
  3. * @param index 索引
  4. * @param previousHash 前一个区块的hash值
  5. * @param timestamp 时间戳
  6. * @param data 数据
  7. * @param nonce 难度系数
  8. * @return 当前hash
  9. */
  10. private String calculateHash(int index, String previousHash, long timestamp, String data,long nonce) {
  11. StringBuilder builder = new StringBuilder(index);
  12. builder.append(previousHash).append(timestamp).append(data).append(nonce);
  13. return CryptoUtil.getSHA256(builder.toString());
  14. }

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

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

  1. package cn.wenwuyi.blockchain.util;
  2. import java.security.MessageDigest;
  3. /**
  4. *
  5. * 类名:CryptoUtil.java
  6. * 描述:TODO
  7. * 时间:2018年3月12日 下午7:06:04
  8. * @author cn.wenwuyi
  9. * @version 1.0
  10. */
  11. public class CryptoUtil {
  12. private CryptoUtil() {
  13. }
  14. public static String getSHA256(String str) {
  15. MessageDigest messageDigest;
  16. String encodeStr = "";
  17. try {
  18. messageDigest = MessageDigest.getInstance("SHA-256");
  19. messageDigest.update(str.getBytes("UTF-8"));
  20. encodeStr = byte2Hex(messageDigest.digest());
  21. } catch (Exception e) {
  22. System.out.println("getSHA256 is error" + e.getMessage());
  23. }
  24. return encodeStr;
  25. }
  26. private static String byte2Hex(byte[] bytes) {
  27. StringBuilder builder = new StringBuilder();
  28. String temp;
  29. for (int i = 0; i < bytes.length; i++) {
  30. temp = Integer.toHexString(bytes[i] & 0xFF);
  31. if (temp.length() == 1) {
  32. builder.append("0");
  33. }
  34. builder.append(temp);
  35. }
  36. return builder.toString();
  37. }
  38. }

©著作权归作者所有:来自51CTO博客作者yangjiang1988的原创作品,如需转载,请注明出处,否则将追究法律责任

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/975166
推荐阅读
相关标签
  

闽ICP备14008679号