亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Golang 中計算嵌套/迭代 MD5 哈希?

如何在 Golang 中計算嵌套/迭代 MD5 哈希?

Go
繁星淼淼 2023-06-01 14:19:47
我正在構建一個使用 golang 來暴力破解密碼的程序。密碼哈希的格式是將 1000 倍應用于初始密碼然后使用的 md5 哈希。(我展示的代碼只應用了這個 5x)md5(md5(md5(md5(....(md5(密碼))))))func hash(pw string) string {    hasher := md5.New()    data := []byte(pw)    fmt.Printf("Initial data: %s\n", pw)    for i := 0; i < 5; i++ {        hasher.Reset()        hasher.Write(data)        sum := hasher.Sum(nil)        data = sum[:]        fmt.Printf("Iteration %x has the hash: %x\n", i+1, data)    }    return hex.EncodeToString(data)}結果不同于使用命令行實用程序 md5sum 給出的結果。我的另一個嘗試是使用,因為這是無狀態的,但我仍然開始偏離第二輪哈希sum := md5.Sum([]byte(data))實現計算此迭代哈希的好/成功方法是什么?
查看完整描述

1 回答

?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

也許我誤解了你的問題,但這是你要找的嗎?


package main


import (

    "crypto/md5"

    "fmt"

    "io"

)


func main() {

    fmt.Printf("\nresult: %s", md5plus("123", 2))

}


func md5plus(text string, cost int) string {

    for i := 0; i < cost; i++ {

        fmt.Printf("Loop %d: %s", i+1, text)

        hash := md5.New()

        io.WriteString(hash, text)

        text = fmt.Sprintf("%x", hash.Sum(nil))

        fmt.Printf(" => %s\n", text)

    }


    return text

}

https://play.golang.org/p/ri-5m3RZ_8v


我知道您正試圖在您的版本中重用散列器,但據我了解,這不是該庫的用途。您寫入它來計算單個哈希值,而不是輪數。


查看完整回答
反對 回復 2023-06-01
  • 1 回答
  • 0 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號