go生成文件md5、sha1摘要简单示例

这篇具有很好参考价值的文章主要介绍了go生成文件md5、sha1摘要简单示例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

备注

go官方文档 https://pkg.go.dev/crypto/md5 已经给出如何使用该package生成文件或者字节数组的摘要值, 参照即可。 摘要值不是对文内容的加密,它主要用来进行checksum,就是验证两个文件内容是否一致,是否被篡改或者变化了。

简介

“crypto/sha256”
“crypto/md5”
“crypto/sha1”
根据文档介绍, 可直接通过如下方式对字节数据或者文件流进行摘要获取

对字节数据获取摘要

s := "Foo"

md5 := md5.Sum([]byte(s))
sha1 := sha1.Sum([]byte(s))
sha256 := sha256.Sum256([]byte(s))

fmt.Printf("%x\n", md5)
fmt.Printf("%x\n", sha1)
fmt.Printf("%x\n", sha256)

对文件取摘要值示例。 将如下示例代码中的sha256.New() 替换为h := sha1.New(), 即可获取sha1值, 通过fmt.Printf(“%x\n”, sum)获取摘要值的字符串, 也可以通过hex.EncodeToString(md5Byte) 将摘要值encode为可以打印的字符串。

func main() {
	f, err := os.Open("file.txt")
	if err != nil {
		log.Fatal(err)
	}
	defer f.Close()

	h := sha256.New()
	if _, err := io.Copy(h, f); err != nil {
		log.Fatal(err)
	}

	fmt.Printf("%x", h.Sum(nil))
}

示例代码文章来源地址https://www.toymoban.com/news/detail-659740.html

package main

import (
	"crypto/md5"
	"encoding/hex"
	"fmt"
	"io"
	"os"
)


func calcFileMD5(filePath string) (string, error) {
	file, err := os.Open(filePath)
	if err != nil {
		return "", err
	}
	md5Handle := md5.New()
	_, _ = io.Copy(md5Handle, file)

	md5Byte := md5Handle.Sum(nil)        //计算 MD5 值,返回 []byte
	md5str := fmt.Sprintf("%x", md5Byte) //将 []byte 转为 string
	fmt.Printf("md5Byte:%v, md5str:%v\n", md5Byte, md5str)
	return hex.EncodeToString(md5Byte), nil
}

func main() {
	dir, err := os.Getwd()
	if err != nil {
		fmt.Println("Error getting current directory: ", err)
		return
	}

	fmt.Println("Current dir: ", dir)

	var fileName = "file1.txt"
	md5Val, err := calcFileMD5(fileName)
	if err != nil {
		fmt.Printf("fail to calc md5 for file %v, errMsg:%v\n", fileName, err)
	} else {
		fmt.Printf("md5 for file %v is %v\n", fileName, md5Val)
	}

	fmt.Println("字符串的md5值demo")
	str := "要取摘要的字符串abc"
	md5Handle := md5.New()
	_, err = io.WriteString(md5Handle, str)
	if err != nil {
		fmt.Printf("fail to calc md5 for string %v is errMsg:%v\n", str, err)
		return
	}
	md5ValByte := md5Handle.Sum(nil)
	// 输出16进制格式的MD5字符串
	fmt.Printf("%x\n", md5ValByte)
	md5str := hex.EncodeToString(md5ValByte)
	fmt.Printf("md5 for string %v is %v. lenght:%d\n", str, md5str, len(md5ValByte))

	fmt.Println("byte 数组的md5值demo")
	dataByte := []byte("要取摘要的数据") // 将字符串转换为byte数组
	md5Val16Byte := md5.Sum(dataByte) // 对data进行MD5哈希计算

	// 输出16进制格式的MD5字符串
	fmt.Printf("%x\n", md5Val16Byte)
	sliceFrom16ByteArray := md5Val16Byte[:]
	md5str = hex.EncodeToString(sliceFrom16ByteArray)
	fmt.Printf("md5 for byte[] %v is %v. lenght:%d\n", dataByte, md5str, len(md5Val16Byte))
}

到了这里,关于go生成文件md5、sha1摘要简单示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python hashlib 加密方法(MD5、SHA1、SHA256、SHA52)

    Python 提供了 hashlib 模块来进行加密操作。在下面的文章中,我们将介绍 hashlib 模块的常用加密算法。 hashlib 模块是 Python 中用于加密的标准库。它包含了所有常见的哈希函数,例如 SHA1、SHA224、SHA256、SHA384、SHA512、MD5 等。这些哈希函数都是单向的,即只能对信息进行加密,而

    2024年02月07日
    浏览(48)
  • Android 应用签名证书的SHA1、MD5、SHA256值在哪获取?

    SHA1值分为发布版和调试版。MD5、SHA256与SHA1的获取是一样的。 调试版就是我们平时开发测试时用的默认签名文件。这个默认的签名文件一般是在c盘的用户名目录下的.android文件夹内。 默认文件就是  debug.keystore 获取调试版的SHA1值 : 回车后即可看到调试版的SHA1值了。

    2024年02月12日
    浏览(60)
  • Android studio获取证书的MD5/SHA1/SHA-256以及公钥的方法

    Android studio 获取MD5 SHA1 SHA-256 值命令:./gradlew signingReport Android studio 获取公钥:keytool -export -alias key0 -keystore key.keystore -file zhengshu.cer 一、获取MD5 SHA1 SHA-256 值 在Android项目中执行命令:./gradlew signingReport 然后以上操作执行完成之后,搜索你的证书名称,找到以下数据: 二、获

    2024年02月03日
    浏览(76)
  • kali/windows/burpsuite/Python下计算md5,sha1,sha256,base64的值

    对明文进行加密使之变成密文时,常用到的有 md5,sha1,sha256,base64      情景 :假设对“202222804198”这串数字进行加密,windows和kali桌面上已存在一个“1.txt”的文件,文件内容为该数字( 文件中除了需要加密的内容外不要有空行,回车的存在 ) 首先简单了解certutil的用法

    2024年02月11日
    浏览(47)
  • uniapp离线打包 如何查看公钥 /android studio 导出秘钥证书/获取MD5 SHA256 SHA1值

    使用uniapp离线打包 或者 根据 云端证书 获取 秘钥证书 app申请阿里云备案 在android studio 查看 离线打包的的MD5 SHA256 SHA1值 提示:根据证书或者签名 获取 MD5 SHA256 SHA1值 公钥 or 1.根据云端获取 生成证书 查看公钥 2.android studio 获取MD5 SHA256 SHA1值 3.如果没有获取到MD5 file = setting

    2024年01月18日
    浏览(73)
  • Java工具集 Hex、Hmac算法(MD5、SHA1、SHA256、SHA384、SHA512)、雪花算法SnowflakeId、redis基于Springboot工具类

    🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 专栏 描述 Java项目实战 介绍Java组件安装、使用;手写框架等 Aws服务器实战 Aws Linux服务器上操作nginx、git、JDK、Vue Jav

    2024年04月09日
    浏览(78)
  • 前端如何加密数据--五种方式(base64加密、md5加密、sha1加密、字符串方法加密、AES加密)

    1.base64加密(包括小写字母a-z、大写字母A-Z、数字0-9、符号\\\"+\\\"、\\\"/\\\"一共64个字符的字符集,另加一个“=”,实际是65个字符) 字符串转换为base64:str64 = window.btoa(str) base64转换为字符串:str=window.atob(str64) 2.md5加密 3.sha1加密   4.字符串的编码和解码(JS函数的escape()和unescape())

    2024年02月16日
    浏览(60)
  • 大文件 MD5 SHA 校验时间优化之路

    最近研发apk校验服务,很多游戏安装包两三个G,如果整个拿去校验,耗时基本二十多秒,这还仅仅是校验的时间,如果加上下载的时间,等待时间太长了 网上很多方案尝试了一下,不太行 1、fast md5 一个第三方库,csdn有人用过说可以提升40%的速度,然后我去试了一下,本来

    2024年02月09日
    浏览(50)
  • openssl做文件处理(base64,MD5,sha256等)

    这次使用openssl,发现openssl不仅可以用来做加密和解密,实际上也可以用来做文件的处理,比如base64转码、解码,文件md5的计算等。实现这些,即可以从命令行去做,也可以通过代码去实现。 1. 命令行操作         1. base64转码、解码                转码:         

    2024年02月11日
    浏览(43)
  • 一文搞懂MD5、SHA-1、SHA-2、SHA-3,哪个算法比较安全

    MD5、SHA-1、SHA-2、SHA-3都是比较常见的单向散列函数,这几种单向散列函数都有自己的特性。下面,给大家介绍一下它们的区别,以及MD5、SHA-1、SHA-2、SHA-3的安全性如何,哪种算法比较安全? 一、简介 单向散列函数是指对不同的输入值,通过单向散列函数进行计算,得到固定

    2024年02月15日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包