go 计算 MD5
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的更多相关文章
- 最简单的计算MD5方法
原来写过一个计算MD5的程序,是用了一个叫MD5.pas的单元,使用起来还算简单,但还有更简单的办法,安装了indy就会有IdHashMessageDigest单元(delphi 7默认安装indy) ...
- 用python计算md5,sha1,crc32
Linux下计算md5sum,sha1sum,crc: 命令 输出 $md5sum hello f19dd746bc6ab0f0155808c388be8ff0 hello $sha1sum hel ...
- shell 批量计算MD5值
#!/bin/sh #需要计算MD5文件列表 # list=`ls` list="file list" for file in $list do file1=`` echo &qu ...
- Linux快速计算MD5和Sha1命令
Linux计算MD5和Sha1的命令 MD5 MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法 ...
- postman使用pre-request script计算md5
接口加了验签逻辑,具体是md5(salt+时间戳).被某君吐槽说测试不方便啊能不能先关掉.其实没有必要打开又关闭验签功能,postman的pre-request script功能完全可以模拟客户端加密 ...
- Windows下计算md5值
目录 Windows下计算md5值 1.linux 下计算md5值 2.Windows下计算md5值 Windows下计算md5值 1.linux 下计算md5值 [root@master yl]# ...
- 不要对md5file.read()计算md5值
最近遇到的一个问题,我使用以下代码对备份文件计算MD5值: # md5file=open("%s" % outputpath, 'rb') # md5=hashlib.md5(md ...
- 开发工具-在线计算MD5
更新记录: 2022年6月8日 更新标题. 2022年6月1日 开始. 都记在这以后就不用到处找了. 在线计算MD5 https://www.sojson.com/md5/ http://www.ip ...
- 计算 MD5值
// // MD5Value.h // iOSEdu // // Created by littest on 16/2/26. // Copyright © 2016年 littest. All ri ...
- python读取es中的所有数据并计算md5然后进行持久化
#!/usr/bin/python import threading import json import time from elasticsearch import Elasticsearch f ...
随机推荐
- java如何向数组里添加元素
向数组里添加一个元素怎么添加,这儿总结有三种方法: 1.一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度.但有个可以改变大小的数组为ArrayList,即可以定义一个Array ...
- springboot与springcloud区别:
- centos安装JDK、Tomcat、mysql
1.下载 jdk-8u131-linux-x64.tar.gz 下载地址: https://pan.baidu.com/s/1o8LW9eE 密码: miva 2.下载 apache-tomcat-8 ...
- Codeforces Round #571 (Div. 2)
A. Vus the Cossack and a Contest 签. #include <bits/stdc++.h> using namespace std; int main() { ...
- 数据结构实验之二叉树二:遍历二叉树 SDUT 3341
#include <bits/stdc++.h> using namespace std; struct Tree { char data; struct Tree *right; str ...
- scss的使用
看到一篇很好的文章,感觉不用我自己总结了, 上个链接:https://blog.csdn.net/zhouzuoluo/article/details/81010331
- [python]打印异常信息的不同方式
异常捕获 try: execpt Exception as e: print(str(e)) 打印异常信息的方式 1.str(e) 返回字符串类型,只给出异常信息,不包括异常信息的类型,如1/0的异常 ...
- CRT小键盘输入乱码
Options --> Session Options --> Terminal --> Emulation --> Modes 去选中 Enable keypad mode ...
- Redis启动后基础只是讲解
1.单进程 epoll是Linux内核为处理大批量文件描述符而作了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本, 它能显著提高程序在大量并发连接中只有少量活跃的情况 ...
- CLR 虚方法调用和接口方法调用
不知接口方法和虚方法分发有什么区别?似乎在CIL中都是callvirt指令. 对,MSIL里都是callvirt,但JIT的时候得到了不同的处理:对虚方法的分发是编译成这样: mov ecx, es ...