// Hash project main.go
package main import "C" import ( "crypto/md5" "crypto/sha1" "crypto/sha256" "crypto/sha512" "io/ioutil" "unsafe" "fmt" "io" "os" )
//export md5sum func md5sum(filename *C.char,value **C.char) int { var ret = 0 fp, err := os.Open(C.GoString(filename)) if err != nil { ret-- return ret } defer fp.Close() data, err := ioutil.ReadAll(fp) hash := md5.New() _, err = hash.Write(data) if err != nil { ret-- return ret } result := hash.Sum(nil) str := fmt.Sprintf("%x", result) result = []byte(str) *value = (*C.char)(unsafe.Pointer(&result[0])) return ret } func main() { //输入字符串测试开始.
//var bbb *C.char //md5sum(C.CString("test.txt"),&bbb) //fmt.Println(C.GoString(bbb))
input := "abcdefghijklmnopqrstuvwxyz" //MD5算法. hash := md5.New() _, err := hash.Write([]byte(input)) if err != nil { fmt.Println(err) os.Exit(-1) } result := hash.Sum(nil) //或者result := hash.Sum([]byte("")) fmt.Printf("%x\n", result) //SHA1算法. hash = sha1.New() _, err = hash.Write([]byte(input)) if err != nil { fmt.Println(err) os.Exit(-1) } result = hash.Sum(nil) //或者result = hash.Sum([]byte("")) fmt.Printf("%x\n", result) //SHA256算法. hash = sha256.New() _, err = hash.Write([]byte(input)) if err != nil { fmt.Println(err) os.Exit(-1) } result = hash.Sum(nil) //或者result = hash.Sum([]byte("")) fmt.Printf("%x\n", result) //SHA512算法. hash = sha512.New() _, err = hash.Write([]byte(input)) if err != nil { fmt.Println(err) os.Exit(-1) } result = hash.Sum(nil) //或者result = hash.Sum([]byte("")) fmt.Printf("%x\n\n", result) //输入字符串测试结束. //输入文件测试开始. input = "d:/Python.rar" filedata, err := os.Open(input) if err != nil { fmt.Println(err) os.Exit(-1) } //MD5算法. hash = md5.New() _, err = io.Copy(hash, filedata) if err != nil { fmt.Println(err) os.Exit(-1) } result = hash.Sum(nil) //或者result = hash.Sum([]byte("")) fmt.Printf("%x %s\n", result, input) //SHA1算法. hash = sha1.New() _, err = io.Copy(hash, filedata) if err != nil { fmt.Println(err) os.Exit(-1) } result = hash.Sum(nil) //或者result = hash.Sum([]byte("")) fmt.Printf("%x %s\n", result, input) //SHA256算法. hash = sha256.New() _, err = io.Copy(hash, filedata) if err != nil { fmt.Println(err) os.Exit(-1) } result = hash.Sum(nil) //或者result = hash.Sum([]byte("")) fmt.Printf("%x %s\n", result, input) //SHA512算法. hash = sha512.New() _, err = io.Copy(hash, filedata) if err != nil { fmt.Println(err) os.Exit(-1) } result = hash.Sum(nil) //或者result = hash.Sum([]byte("")) fmt.Printf("%x %s\n", result, input) //输入文件测试结束. //程序正常退出. os.Exit(0) }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。