Я пытаюсь реализовать MD5 (ради любопытства) в Python/Java и эффективно переводить псевдокод страницы wikipedia MD5 на любой язык. Во-первых, я использовал Java только для того, чтобы встретить фрустрацию с ее отрицательным/положительным целым переполнением (поскольку unsigned ints не является опцией, for-all integer,-2147483648 <= integer <= 2147483647
). Затем я использовал Python, решив, что он лучше подходит для тяжелых численных вычислений, но понял, что я не смог бы преодолеть 32-битное целочисленное требование без знака (либо, когда Python немедленно отбрасывает завернутые int
s в long
s).Реализация Java/Python MD5 - как преодолеть 32-битное требование без знака?
Есть ли способ взломать недостаток Java/Python unsigned 32-bit integer
s, которые требуются вышеупомянутым псевдокодом MD5?
+1. Люди переоценивают разницу между арифметикой с подписью и без знака, и большинство операций выйдут с тем же результатом. –