目录
MD5算法
package main // 固定
import (
"crypto/md5"
"fmt"
)
func main() { // 大括号的位置是固定的
myMd5 := md5.New()
myMd5.Write([]byte("zengraoli"))
result := myMd5.Sum([]byte("")) // Sum appends the current hash to b and returns the resulting slice.
fmt.Println(result)
fmt.Printf("%x\r\n", result)
myMd5.Write([]byte("zengraoli2"))
result = myMd5.Sum([]byte(""))
fmt.Println(result)
fmt.Printf("%x\r\n", result)
}
SHA256算法
package main // 固定
import (
"fmt"
"crypto/sha256" // 需要指定算法头文件
)
func main() { // 大括号的位置是固定的
str := "zengraoli"
sha256Str := sha256.New()
sha256Str.Write([]byte(str))
result := sha256Str.Sum([]byte(""))
fmt.Println(result)
fmt.Printf("%x\r\n", result)
}
sha512也是一样的使用
文件哈希
package main // 固定
import (
"os"
"crypto/sha256"
"encoding/hex"
"io"
"fmt"
)
func GetFileSha256(filePath string) (string, error){
// 打开文件
var fileSha256Value string
file, err := os.Open(filePath)
if err != nil {
return fileSha256Value, err // 处理打开文件错误
}
// 延迟关闭文件
defer file.Close()
mySha256 := sha256.New()
if _, err := io.Copy(mySha256, file);err != nil {
return fileSha256Value, err // 处理拷贝错误
}
// 如果打开没有错误,返回文件的md5值
hashInBytes := mySha256.Sum(nil) // 得到文件的sha256哈希
fileSha256Value = hex.EncodeToString(hashInBytes) // 把byte的值转换成16进制
return fileSha256Value, nil
}
func main() { // 大括号的位置是固定的
fileSha256Value, err := GetFileSha256("hellworld.go")
fmt.Println(fileSha256Value, err)
}
Base64编码
package main // 固定
import (
"fmt"
"encoding/base64"
"encoding/hex"
)
// 编解码table可以任意修改
var base64Table = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm0123456789/*"
var coder = base64.NewEncoding(base64Table) // 编解码的表格
func Base64Encoder(src []byte) []byte {
return []byte(coder.EncodeToString(src))
}
func Base64Decoder(src []byte) ([]byte, error) {
return coder.DecodeString(string(src))
}
func main() { // 大括号的位置是固定的
fmt.Println(len(base64Table))
// 输出编码后的值
base64EncoderRes := Base64Encoder([]byte("zengraoli依然"))
// 输出16进制的base64的string
fmt.Printf("%x\r\n", hex.EncodeToString(base64EncoderRes))
fmt.Println(string(base64EncoderRes))
base64DecoderRes, err := Base64Decoder(base64EncoderRes)
// 输出16进制的base64的string
fmt.Printf("%x\r\n", hex.EncodeToString(base64DecoderRes))
fmt.Println(string(base64DecoderRes), err)
}