1
我剛剛開始使用golang並編寫了一個非常小的腳本,除了sha224以外,一切正常。有人可以解釋我爲什麼我得到錯誤(關於我的腳本)?我不需要修正這個錯誤,我想理解它,以防止將來的錯誤從我身邊。crypto/sha256中的GetSha224未聲明名稱
該錯誤49:12:未申報的名稱:sha224表明我沒有聲明的東西,但我無法找到它,因爲我對所有哈希algorythms做同樣的事情。
我不是程序員,也不是golang的專家。它關於我的第一個去程序。
package main
import (
"crypto/md5"
"crypto/sha1"
"crypto/sha256"
"crypto/sha512"
"encoding/hex"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "http://45.32.153.207/index2.php"
fmt.Printf("HTML code of %s ...\n", url)
resp, err := http.Get(url)
if err != nil {
panic(err)
}
defer resp.Body.Close()
html, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Printf("%s\n", html)
toHash := CToGoString(html[:])
fmt.Printf("%s\n", GetMD5Hash(toHash))
fmt.Printf("%s\n", GetSha1Hash(toHash))
fmt.Printf("%s\n", GetSha224Hash(toHash))
fmt.Printf("%s\n", GetSha256Hash(toHash))
fmt.Printf("%s\n", GetSha512Hash(toHash))
}
func GetMD5Hash(text string) string {
hasher := md5.New()
hasher.Write([]byte(text))
return hex.EncodeToString(hasher.Sum(nil))
}
func GetSha1Hash(text string) string {
hasher := sha1.New()
hasher.Write([]byte(text))
return hex.EncodeToString(hasher.Sum(nil))
}
func GetSha224Hash(text string) string {
hasher := sha224.New()
hasher.Write([]byte(text))
return hex.EncodeToString(hasher.Sum(nil))
}
func GetSha256Hash(text string) string {
hasher := sha256.New()
hasher.Write([]byte(text))
return hex.EncodeToString(hasher.Sum(nil))
}
func GetSha512Hash(text string) string {
hasher := sha512.New()
hasher.Write([]byte(text))
return hex.EncodeToString(hasher.Sum(nil))
}
func CToGoString(c []byte) string {
n := -1
for i, b := range c {
if b == 0 {
break
}
n = i
}
return string(c[:n+1])
}
非常感謝你爲一個內膽,那是非常有益的,我現在在我的腳本改變了一切。似乎以同樣的方式工作。 – snapo