Java Android消息摘要可以正确地获取大多数哈希值,但不是所有哈希值
大家好,我正在尝试计算3个不同的散列,稍后我将与我自己的数据库进行匹配。问题是它似乎并不总是生成正确的散列。我知道这是不对的,因为当我获取实际哈希并将其写入VirusTotal时,它会发现它没有问题,但当我尝试使用消息摘要计算它时,它不会返回正确的值 这是我的密码:Java Android消息摘要可以正确地获取大多数哈希值,但不是所有哈希值,java,android,hash,message,digest,Java,Android,Hash,Message,Digest,大家好,我正在尝试计算3个不同的散列,稍后我将与我自己的数据库进行匹配。问题是它似乎并不总是生成正确的散列。我知道这是不对的,因为当我获取实际哈希并将其写入VirusTotal时,它会发现它没有问题,但当我尝试使用消息摘要计算它时,它不会返回正确的值 这是我的密码: try { PackageInfo info = pm.getPackageInfo( name, P
try {
PackageInfo info = pm.getPackageInfo(
name, PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("MD5");
md.update(signature.toByteArray());
byte[] messageDigestMD5 = md.digest();
StringBuffer stringBuffer = new StringBuffer();
for (byte bytes : messageDigestMD5) {
stringBuffer.append(String.format("%02x", bytes & 0xff));
}
stringBuffer.append(" ");
md = MessageDigest.getInstance("SHA-1");
md.update(signature.toByteArray());
byte[] messageDigestSHA1 = md.digest();
for (byte bytes : messageDigestSHA1){
stringBuffer.append(String.format("%02x", bytes & 0xff));
}
stringBuffer.append(" ");
md = MessageDigest.getInstance("SHA-256");
md.update(signature.toByteArray());
byte[] messageDigestSHA256 = md.digest();
for (byte bytes : messageDigestSHA256){
stringBuffer.append(String.format("%02x", bytes & 0xff));
}
res.setHash(stringBuffer.toString());
}
} catch (PackageManager.NameNotFoundException e1) {
} catch (NoSuchAlgorithmException e) {
} catch (Exception e) {
}
So res.setHash(stringBuffer.toString());是我自己的setter函数,它将所有内容添加到其他部分使用的结果列表中。同样,它似乎可以正确执行大约90%的哈希