Golang - Crypto的包函数“Available()”未定义

时间:2016-08-01 11:03:59

标签: go cryptography

这可能是一个非常基本和愚蠢的问题,但我被困住了。据我所知documentation,如果导入了给定的哈希函数,则Available()函数应该返回true。所以,这段代码:

package main

import (
    "crypto/md5"
    "fmt"
)

func main() {
    fmt.Println(md5.Available())
}

应该生成true作为输出。但是,当我尝试运行上面的代码时,我收到“./main.go:10:undefined:md5.Available”错误。我错过了什么?提前谢谢。

2 个答案:

答案 0 :(得分:2)

您使用的md5是包的标识符,您需要的是Hash类型的“实例”:

import (
    "crypto"
    "fmt"
)

func main() {
    fmt.Println(crypto.MD5.Available())
}

输出:

false

答案 1 :(得分:1)

crypto.MD5.Available()

  

可用报告是否将给定的哈希函数链接到   二进制的。

哈希函数链接到二进制文件:
工作示例代码(crypto.MD5.Available() == true):

package main

import (
    "crypto"
    "crypto/md5"
    "fmt"
)

func main() {
    fmt.Println(crypto.MD5.Available()) // true

    w := md5.New()
    fmt.Fprintf(w, "Hello World")
    fmt.Printf("%x \n", w.Sum(nil))
}

哈希函数未链接到二进制文件:

package main

import (
    "crypto"
    "fmt"
)

func main() {
    fmt.Println(crypto.MD5.Available())
}

输出:

false