文章目录
- 前言
- 一、MD5是什么?
- 二、go语言实现
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、MD5是什么?
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。
二、go语言实现
package mainimport ("crypto/md5""encoding/hex""fmt"
)func main() {hash := md5.New()hash.Write([]byte("hello baby"))//io.WriteString(hash, "hello baby!")result := hash.Sum (nil)fmt.Println(hex.EncodeToString(result))hash.Reset()hash.Write([]byte("hello baby123"))result = hash.Sum(nil)fmt.Println(hex.EncodeToString(result))//fmt.Printf("%x\n", result)
}//4be678c3cfbd2cebe0e36503d53e6767
//4be678c3cfbd2cebe0e36503d53e6767
//292bf3c832cce2ab5d4f9775596b13bd
//3132334be678c3cfbd2cebe0e36503d53e6767func main6_2() {result := md5.Sum([]byte("hello baby"))fmt.Println(hex.EncodeToString(result[:]))
}/*
两种方式的优缺点:优点 缺点
方式一 可以对哈希对象多次复用 代码繁琐
方式二 代码简洁 对象不能复用*/