Golang的加密库都放在crypto目录下,其中MD5库在crypto/md5包中,该包主要提供了New和Sum函数

直接调用md5计算

package main

import (
"crypto/md5"
"fmt"
) func main() {
data := []byte("crypted data")
fmt.Printf("%x", md5.Sum(data))
} ------------------------------------
121d0611200c43f67b722446a4faea45

  

另一种是调用md5.New()生成一个hash对象,然后往这个对象写将要加密的数据就行了

package main

import (
"crypto/md5"
"fmt"
"io"
) func main() {
h := md5.New()
io.WriteString(h, "crypted data")
fmt.Printf("%x", h.Sum(nil))
} ------------------------------------------
121d0611200c43f67b722446a4faea45

  

或者调用write方法写

package main

import (
"crypto/md5"
"fmt"
) func main() {
h := md5.New()
h.Write([]byte("crypted data"))
fmt.Printf("%x", h.Sum(nil))
} -----------------------------------
121d0611200c43f67b722446a4faea45

Sum 函数是对hash.Hash对象内部存储的内容进行校验和 计算然后将其追加到data的后面形成一个新的byte切片。因此通常的使用方法就是将data置为nil。

该方法返回一个Size大小的byte数组,对于MD5来说就是一个128bit的16字节byte数组。

示例:文件的 md5 和 字符串的 md5

package main

import (
"crypto/md5"
"encoding/hex"
"fmt"
"io"
"os"
) func GetFileMd5(filename string) (string, error) {
file, err := os.Open(filename)
if err != nil {
fmt.Println("os Open error")
return "", err
}
md5 := md5.New()
_, err = io.Copy(md5, file)
if err != nil {
fmt.Println("io copy error")
return "", err
}
md5Str := hex.EncodeToString(md5.Sum(nil))
return md5Str, nil
} func GetStringMd5(s string) string {
md5 := md5.New()
md5.Write([]byte(s))
md5Str := hex.EncodeToString(md5.Sum(nil))
return md5Str
} func main() {
file := "test.txt"
s := "hello world" Val1, _ := GetFileMd5(file)
Val2 := GetStringMd5(s) fmt.Println("Val1: %s, Val2: %s", Val1, Val2)
}
 

  

参考: https://www.jianshu.com/p/58dcbf490ef3

go 计算 MD5的更多相关文章

  1. 最简单的计算MD5方法

    原来写过一个计算MD5的程序,是用了一个叫MD5.pas的单元,使用起来还算简单,但还有更简单的办法,安装了indy就会有IdHashMessageDigest单元(delphi 7默认安装indy) ...

  2. 用python计算md5,sha1,crc32

    Linux下计算md5sum,sha1sum,crc: 命令 输出 $md5sum hello f19dd746bc6ab0f0155808c388be8ff0  hello $sha1sum hel ...

  3. shell 批量计算MD5值

    #!/bin/sh #需要计算MD5文件列表 # list=`ls` list="file list" for file in $list do file1=`` echo &qu ...

  4. Linux快速计算MD5和Sha1命令

    Linux计算MD5和Sha1的命令 MD5 MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法 ...

  5. postman使用pre-request script计算md5

    接口加了验签逻辑,具体是md5(salt+时间戳).被某君吐槽说测试不方便啊能不能先关掉.其实没有必要打开又关闭验签功能,postman的pre-request script功能完全可以模拟客户端加密 ...

  6. Windows下计算md5值

    目录 Windows下计算md5值 1.linux 下计算md5值 2.Windows下计算md5值 Windows下计算md5值 1.linux 下计算md5值 [root@master yl]# ...

  7. 不要对md5file.read()计算md5值

    最近遇到的一个问题,我使用以下代码对备份文件计算MD5值: # md5file=open("%s" % outputpath, 'rb') # md5=hashlib.md5(md ...

  8. 开发工具-在线计算MD5

    更新记录: 2022年6月8日 更新标题. 2022年6月1日 开始. 都记在这以后就不用到处找了. 在线计算MD5 https://www.sojson.com/md5/ http://www.ip ...

  9. 计算 MD5值

    // // MD5Value.h // iOSEdu // // Created by littest on 16/2/26. // Copyright © 2016年 littest. All ri ...

  10. python读取es中的所有数据并计算md5然后进行持久化

    #!/usr/bin/python import threading import json import time from elasticsearch import Elasticsearch f ...

随机推荐

  1. java如何向数组里添加元素

    向数组里添加一个元素怎么添加,这儿总结有三种方法: 1.一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度.但有个可以改变大小的数组为ArrayList,即可以定义一个Array ...

  2. springboot与springcloud区别:

  3. centos安装JDK、Tomcat、mysql

    1.下载 jdk-8u131-linux-x64.tar.gz 下载地址: https://pan.baidu.com/s/1o8LW9eE 密码: miva 2.下载 apache-tomcat-8 ...

  4. Codeforces Round #571 (Div. 2)

    A. Vus the Cossack and a Contest 签. #include <bits/stdc++.h> using namespace std; int main() { ...

  5. 数据结构实验之二叉树二:遍历二叉树 SDUT 3341

    #include <bits/stdc++.h> using namespace std; struct Tree { char data; struct Tree *right; str ...

  6. scss的使用

    看到一篇很好的文章,感觉不用我自己总结了, 上个链接:https://blog.csdn.net/zhouzuoluo/article/details/81010331

  7. [python]打印异常信息的不同方式

    异常捕获 try: execpt Exception as e: print(str(e)) 打印异常信息的方式 1.str(e) 返回字符串类型,只给出异常信息,不包括异常信息的类型,如1/0的异常 ...

  8. CRT小键盘输入乱码

    Options --> Session Options --> Terminal --> Emulation --> Modes 去选中 Enable keypad mode ...

  9. Redis启动后基础只是讲解

    1.单进程 epoll是Linux内核为处理大批量文件描述符而作了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本, 它能显著提高程序在大量并发连接中只有少量活跃的情况 ...

  10. CLR 虚方法调用和接口方法调用

    不知接口方法和虚方法分发有什么区别?似乎在CIL中都是callvirt指令. 对,MSIL里都是callvirt,但JIT的时候得到了不同的处理:对虚方法的分发是编译成这样: mov  ecx, es ...