我正在使用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
答案 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);