常用的Hash算法
MD5
MD5:生成hash长度为128位
sha256
Hash:生产hash长度为256位
go语言实现MD5
package main
import (
"crypto/md5"
"fmt"
"io"
)
//哈希运算,使用go包,有两种调用方式
//方式一:
func md5Test1(info []byte) []byte {
//对大量数据进行哈希运算
//1、创建一个哈希器
hasher := md5.New()
io.WriteString(hasher,"hello")
io.WriteString(hasher,"world")
//2、执行Sum操作,得到hash值
//sum(b),如果b不是nil,那么返回的值为b+hash值
hash := hasher.Sum(nil)
return hash
}
//方式二:
func md5Test2(info []byte) []byte {
hash := md5.Sum(info)
return hash[:] //数组转换为切片
}
func main() {
hash1 := md5Test1(nil)
fmt.Printf("hash1:%x\n",hash1)
hash2 := md5Test1([]byte("hello world"))
fmt.Printf("hash2:%x\n",hash2)
}
package main
import (
"crypto/sha256"
"fmt"
"io"
"os"
)
//使用打开文件方式获取
const filename = `E:\学习视频\4、4天掌握GO语言密码学-用实践验证理论视频\day2\03-openssl生成公钥私钥.mp4`
func main(){
//1、open文件
file,err := os.Open(filename)
if err != nil{
panic(err)
}
//2、创建hash
hasher := sha256.New()
//3、copy语柄
length , err := io.Copy(hasher,file)
if err != nil{
panic(err)
}
fmt.Println("length:",length)
//4、hsah sum操作
hash := hasher.Sum(nil)
fmt.Printf("hash:%x\n",hash)
}