0
我昨天在python原型這個功能bruteforce一個MD5散列,它的作品非常漂亮。 在這種情況下,它將打印Match: aa
和4124bc0a9335c27f086f24ba207a4912
。因爲這是字符串「aa」的散列。MD5 Bruteforce,問題翻譯從Python到Javascript
import hashlib
def crack(chars, st, hsh):
if chars == 0:
if hashlib.md5(st).hexdigest() == hsh:
print "Match: " + st
print hashlib.md5(st).hexdigest()
else:
for i in range(32,127):
new = st + str(unichr(i))
crack(chars - 1, new, hsh)
crack(2, "", "4124bc0a9335c27f086f24ba207a4912")
現在我試圖在JavaScript中實現它。我已經在使用md5庫,它工作正常。這裏是我寫的代碼,遞歸沒有按預期工作。我將顯示代碼和控制檯輸出來說明。
<!DOCTYPE html>
<html lang="en">
<body>
<script src="js/md5.min.js"></script>
<script>
function crack(chars, st, hsh){
console.log(chars);
console.log(st);
if (chars == 0){
if (md5(st) == hsh){
console.log(st);
}
}
else {
for (i = 32; i <= 126; i++){
newst = st + String.fromCharCode(i);
crack(chars - 1, newst, hsh);
}
}
}
crack(2, "", "4124bc0a9335c27f086f24ba207a4912");
</script>
</body>
</html>
現在的控制檯輸出:
2
(space ascii 32)
1
(space ascii 32)
0
(space ascii 32)
0
!
0
"
0
#
0
$
0
%
0
&
0
etc.
0
~ (ascii 126)
需要什麼樣的魔法來解決這一問題?