下面是实现 Merkle 树的 Java 代码:
``` package test;
import java.security.MessageDigest; import java.util.ArrayList; import java.util.List;
public class MerkleTrees {
// 交易列表
List /**构造函数
* @param txList 交易列表
*/
public MerkleTrees(List /**执行 Merkle 树
*/
public void merkle_tree() {
List /**返回节点哈希列表
* @param tempTxList
* @return
*/
private List /**返回 16 进制字符串
* @param str
* @return
*/
public String getSHA2HexValue(String str) {
byte[] cipher_byte;
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(str.getBytes());
cipher_byte = md.digest();
StringBuilder sb = new StringBuilder(2 * cipher_byte.length);
for (byte b : cipher_byte) {
sb.append(String.format("%02x", b & 0xff));
}
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
return "";
} /**获取 Merkle 树根节点
* @return
*/
public String getRoot() {
return this.root;
}
} ``` 我们将交易的数据放入到List中: ```
List 计算出每个数据的hash值,从左到右逐步组成树的左右节点。执行循环直到最后只剩下一个数据。 ```
private List 下面我们进行一个简单的测试: ```
package test; import java.util.ArrayList;
import java.util.List; public class App {
public static void main(String[] args) {
List