import java.security.*;
import java.math.BigInteger;

public class Main {
	public static String getSHA256(String data){
	    String sb = "";
	    try{
	        MessageDigest md = MessageDigest.getInstance("SHA-256");
	        md.update(data.getBytes("UTF-8"));
	        byte byteData[] = md.digest();	        
	        sb=new BigInteger(1, byteData).setBit(256).toString(16);
	        sb=sb.substring(1);
	    } catch(Exception e){
	        e.printStackTrace();
	    }
	    return sb;
	}

	public static void main(String[] args) throws Exception {
		String m="虛擬貨幣用的雜湊函數";
		byte[] mm=m.getBytes("UTF-8");
		System.out.print("UTF-8 code for \"虛擬貨幣用的雜湊函數\":");
		for(int i=0; i<mm.length; i++){
	   	   System.out.printf("%02x", mm[i]);
	    }
		m=new String(m.getBytes("UTF-8"), "UTF-8");
		
		System.out.println(" , SHA-256 digest="+getSHA256(m));

	}

}
