• go 计算 MD5


    Golang的加密库都放在crypto目录下,其中MD5库在crypto/md5包中,该包主要提供了New和Sum函数

    直接调用md5计算

    package main
     
    import (
    	"crypto/md5"
    	"fmt"
    )
     
    func main() {
    	data := []byte("crypted data")
    	fmt.Printf("%x", md5.Sum(data))
    }
     
    ------------------------------------
    121d0611200c43f67b722446a4faea45
    

      

    另一种是调用md5.New()生成一个hash对象,然后往这个对象写将要加密的数据就行了

    package main
     
    import (
    	"crypto/md5"
    	"fmt"
    	"io"
    )
     
    func main() {
    	h := md5.New()
    	io.WriteString(h, "crypted data")
    	fmt.Printf("%x", h.Sum(nil))
    }
     
    ------------------------------------------
    121d0611200c43f67b722446a4faea45
    

      

    或者调用write方法写

    package main
     
    import (
    	"crypto/md5"
    	"fmt"
    )
     
    func main() {
    	h := md5.New()
    	h.Write([]byte("crypted data"))
    	fmt.Printf("%x", h.Sum(nil))
    }
     
    -----------------------------------
    121d0611200c43f67b722446a4faea45
    

    Sum 函数是对hash.Hash对象内部存储的内容进行校验和 计算然后将其追加到data的后面形成一个新的byte切片。因此通常的使用方法就是将data置为nil。

    该方法返回一个Size大小的byte数组,对于MD5来说就是一个128bit的16字节byte数组。

    示例:文件的 md5 和 字符串的 md5

    package main
     
    import (
    	"crypto/md5"
    	"encoding/hex"
    	"fmt"
    	"io"
    	"os"
    )
     
    func GetFileMd5(filename string) (string, error) {
    	file, err := os.Open(filename)
    	if err != nil {
    		fmt.Println("os Open error")
    		return "", err
    	}
    	md5 := md5.New()
    	_, err = io.Copy(md5, file)
    	if err != nil {
    		fmt.Println("io copy error")
    		return "", err
    	}
    	md5Str := hex.EncodeToString(md5.Sum(nil))
    	return md5Str, nil
    }
     
    func GetStringMd5(s string) string {
    	md5 := md5.New()
    	md5.Write([]byte(s))
    	md5Str := hex.EncodeToString(md5.Sum(nil))
    	return md5Str
    }
     
    func main() {
    	file := "test.txt"
    	s := "hello world"
     
    	Val1, _ := GetFileMd5(file)
    	Val2 := GetStringMd5(s)
     
    	fmt.Println("Val1: %s, Val2: %s", Val1, Val2)
    }
     
    

      

    参考: https://www.jianshu.com/p/58dcbf490ef3

  • 相关阅读:
    使用angularjs定义html中的属性ng-attr-(suffix)
    JS设置cookie、读取cookie、删除cookie
    正则判断
    console使用方法
    angularjs中ng-change使用方法
    angularjs中ng-selected使用方法
    angularjs工具方法
    angularjs中$watch监听model(对象属性、对象)变化
    JS获取select选中的值,所有option值
    AngularJs:String类型和JSON相互转换
  • 原文地址:https://www.cnblogs.com/yorkyang/p/7138051.html
Copyright © 2020-2023  润新知