内容简介:什么是单向加密算法。简而言之就是不可解密的加密方法,也叫作非可逆加密, 用这种方法加密过的东西,地球上现有的人类在有限的时间内是无法解密的,包括加密者自己。主要有:BASE64、MD5、SHA、HMAC,其中最为常见的就有MD5,BASE64。这里我们主要介绍最常使用的MD5算法。该算法可以用来得到一个128bit的值,既可以作为K-V中的key,也可以对密码进行加密从而确保其在传输中"不可见"。
1.单向加密
什么是单向加密算法。简而言之就是不可解密的加密方法,也叫作非可逆加密, 用这种方法加密过的东西,地球上现有的人类在有限的时间内是无法解密的,包括加密者自己。
2.常用的单向加密算法有哪些呢?
主要有:BASE64、MD5、SHA、HMAC,其中最为常见的就有MD5,BASE64。这里我们主要介绍最常使用的MD5算法。该算法可以用来得到一个128bit的值,既可以作为K-V中的key,也可以对密码进行加密从而确保其在传输中"不可见"。
3.Golang的加密库都放在crypto目录下,其中MD5库在crypto/md5包中,该包主要提供了New和Sum函数。
函数原型:
func Sum(data []byte) [Size]byte
返回数据data的MD5校验和。
初始化一个MD5对象.Sum 函数是对hash.Hash对象内部存储的内容进行校验和计算然后将其追加到data的后面形成一个新的byte切片。因此通常的使用方法就是将data置为nil。
该方法返回一个Size大小的byte数组,对于MD5来说就是一个128bit的16字节byte数组。
func New() hash.Hash
返回一个新的使用MD5校验的hash.Hash接口。初始化一个MD5对象.
func main() { h := md5.New() h.Write([]byte("123456")) // 需要加密的字符串为 123456 cipherStr := h.Sum(nil) fmt.Println(cipherStr) fmt.Printf("%s\n", hex.EncodeToString(cipherStr)) // e10adc3949ba59abbe56e057f20f883e }
Base64编码
const ( base64Table = "123QRSTUabcdVWXYZHijKLAWDCABDstEFGuvwxyzGHIJklmnopqr234560178912" ) var coder = base64.NewEncoding(base64Table) func base64Encode(src []byte) []byte { return []byte(coder.EncodeToString(src)) } func base64Decode(src []byte) ([]byte, error) { return coder.DecodeString(string(src)) } func main() { // encode hello := "hello world" debyte := base64Encode([]byte(hello)) // decode enbyte, err := base64Decode(debyte) if err != nil { fmt.Println(err.Error()) } if hello != string(enbyte) { fmt.Println("hello is not equal to enbyte") } fmt.Println(string(enbyte)) }
以上所述就是小编给大家介绍的《Golang学习笔记之MD5》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 【每日笔记】【Go学习笔记】2019-01-04 Codis笔记
- 【每日笔记】【Go学习笔记】2019-01-02 Codis笔记
- 【每日笔记】【Go学习笔记】2019-01-07 Codis笔记
- Golang学习笔记-调度器学习
- Vue学习笔记(二)------axios学习
- 算法/NLP/深度学习/机器学习面试笔记
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
RGB转16进制工具
RGB HEX 互转工具
RGB CMYK 转换工具
RGB CMYK 互转工具