Здесь у меня java код
static String md5(byte[] bArr) {
MessageDigest instance = MessageDigest.getInstance("MD5");
instance.update(bArr);
byte[] digest = instance.digest();
StringBuffer sb = new StringBuffer();
for (byte b : digest) {
sb.append(Integer.toHexString(b & 0xffffffff));
}
return sb.toString();
}
звонок md5("A".getBytes())
, я получил
7fffffffc56270ffffffe7ffffffa7fffffffa81a5935ffffffb72effffffacffffffbe29
Как я могу добиться того же результата с помощью Python? Я попытался использовать следующее
m = hashlib.md5()
m.update(str.encode('utf-8'))
bytes = m.digest()
return ''.join('{:02x}'.format(x) for x in bytes)
. Я получил
7fc56270e7a70fa81a5935b72eacbe29
, который совпадает с m.hexdigest()
Изменить: проблема выглядит с этими «отрицательными» байты между ними. например, второй байт равен «-59» в int в Java, но Python каким-то образом не распознает, а 5-й байт равен «-25»
Эти 'f' являются отрицательными.