将sha256哈希转换为十进制等效字符串

时间:2017-10-18 17:51:51

标签: java android hash sha

我正在使用sha256开发android和arduino之间的安全通信。 这样做我成功了十六进制十进制等效字符串但我的目标是获得十进制等效string.i搜索了很多但没有成功。 任何帮助将不胜感激,并提前感谢 这是我的哈希的安卓代码" 12345678901234567890123456789077"

 String hashfirst="12345678901234567890123456789077";
           MessageDigest digest = null;
        try {
            digest = MessageDigest.getInstance("SHA-256");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        byte[] hash = digest.digest(s.getBytes(StandardCharsets.UTF_8));
        System.out.println(bytesToHex(hash));
    }
    private static String bytesToHex(byte[] bytes) {
        StringBuffer result = new StringBuffer();
        for (byte b : bytes) result.append(Integer.toString((b & 0xFF) + 0x100, 16).substring(1));
        return result.toString();
    }

Resultant Hash字符串是(通过android)

21de5812f71df17b25a5124129ba1ccf5ba67121c548c9f8127f68d9d11293f8

2 个答案:

答案 0 :(得分:0)

使用BigInteger

的内置十字转换
System.out.println(new BigInteger(bytesToHex(hash),16));

答案 1 :(得分:0)

而不是:

Integer.toString((b & 0xFF) + 0x100, 16).substring(1)

尝试使用:

String.format("%03d", (b & 0xFF) + 0x100);