我正在使用以下代码为我的应用程序生成 MD5 哈希,它编码一些字符串值,然后我通过我的 Web 服务将生成的哈希发送到一些 .Net 代码,该代码读取我的 MD5 哈希并生成字符串的 MD5 他是从数据库获取然后比较它们
public static String getMD5Hash(String val) throws Exception {
        byte[] bytes = val.getBytes();
        MessageDigest m = MessageDigest.getInstance("MD5");
        byte[] digest = m.digest(bytes);
        String hash = new BigInteger(1, digest).toString(16);
        System.out.println(hash.length());
        return hash;
    }
    public static void main(String[] asd) throws Exception{
        for(int i=0;i<10;i++){
            System.out.println(getMD5Hash(i+Math.pow(10, i)+""));//for testing
            System.out.println(getMD5Hash(i+""));//for testing
        }
    }
问题是当我从 BigInteger 获得转换后的哈希时,有时生成的哈希以 0 开头,在这种情况下,Biginteger 不考虑 0,而另一方面,当 .Net 生成相同字符串的哈希时,它会使用 0 和以这种方式字符串比较返回false,例如我生成并发送的哈希码“ 102678D1922799CF9122B3F103975F1”在.Net中的哈希是“ 0102678D1922799CF9122B3F103975F1”
有时它也会生成类似的代码
.Net generates  0012678D1922799CF9122B3F103975F1 and java 12678D1922799CF9122B3F103975F1 
或者
0002678D1922799CF9122B3F103975F1 and 2678D1922799CF9122B3F103975F1
我怎样才能得到这个全为 0 的代码。提前致谢。