用Java解释比特币挖矿原理

工具类

public class CryptoUtil {
	private CryptoUtil() {
	}

	public static String SHA256(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;
	}

}

启动类
public class TestMain {
    public static void main(String[] args) {
        int nounce =  1;
        long start = System.currentTimeMillis();
        while (true){
            String hash = CryptoUtil.SHA256("dff453"+"sfsdjsljfslfjg"+nounce);
            if(hash.startsWith("0000000")){
                System.out.println(hash);
                break;
            }
            nounce++;
        }
        long end = System.currentTimeMillis();
        System.out.println("计算次数:"+nounce);
        System.out.println("计算时间:"+(end-start)/(1000*60));
    }
}
经验分享 程序员 微信小程序 职场和发展