Golang学习笔记之MD5

学生黄哲 · · 726 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

726 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传