Go by Example 中文版: SHA1 哈希
时间:2022-07-25
本文章向大家介绍Go by Example 中文版: SHA1 哈希,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Go by Example 中文版:SHA1 哈希
SHA1 散列(hash)经常用于生成二进制文件或者文本块的短标识。 例如,git 版本控制系统 大量的使用了 SHA1 来标识受版本控制的文件和目录。 这是 Go 中如何进行 SHA1 散列计算的例子。
package main
// Go by Example 中文版: SHA1 哈希
// https://gobyexample-cn.github.io/sha1-hashes
//SHA1 散列(hash) 经常用于生成二进制文件或者文本块的短标识。
//例如,git 版本控制系统 大量的使用了 SHA1 来标识受版本控制的文件和目录。
//这是 Go 中如何进行 SHA1 散列计算的例子。
// Go在多个crypto/*包中实现了一系列散列函数
import (
"crypto/sha1"
"fmt"
)
func main() {
s := "sha1 this string"
// 产生一个散列值的方式是 sha1.New()
// sha1.Wrtie(bytes),然后 sha1.Sum([]bytes{})。这里我们从一个新的散列开始。
h := sha1.New()
// 写入要处理的字节。如果是一个字符串,需要使用[]byte(s)将其强制转换成字节数组。
h.Write([]byte(s))
// Sum得到最终的散列值的字符切片。Sum接收一个参数,可以用来给现有的字符切片追加额外的字符切片:
// 但是一般都不需要这样做。
bs := h.Sum(nil)
// SHA1值经常以16进制输出,例如在 git commit中。我们这里也使用%x来将散列结果格式化为16进制字符串。
fmt.Println(s)
fmt.Printf("%xn", bs)
}
运行程序计算散列值,并以可读的 16 进制格式输出。
$ go run sha1-hashes.go
sha1 this string
cf23df2207d99a74fbe169e3eba035e633b65d94
你可以使用和上面相似的方式来计算其他形式的散列值。 例如,计算 MD5 散列,引入 crypto/md5 并使用 md5.New() 方法。
注意,如果你需要密码学上的安全散列,你需要仔细的研究一下 加密散列函数。
- 遗传算法(1)
- LOJ#6284. 数列分块入门 8
- 3713: [PA2014]Iloczyn
- 洛谷P3195 [HNOI2008]玩具装箱TOY(单调队列优化DP)
- SQL Server 深入解析索引存储(下)
- 2751: [HAOI2012]容易题(easy)
- codevs3002 石子归并 3
- 算法模板——计算几何2(二维凸包——Andrew算法)
- 算法模板——splay区间反转 2
- 算法模板——Dinic网络最大流 2
- 1935: [Shoi2007]Tree 园丁的烦恼
- 1339 / 1163: [Baltic2008]Mafia
- 4010: [HNOI2015]菜肴制作
- 4052: [Cerc2013]Magical GCD
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- OpenGL ES for Android 绘制一个点
- OpenGL ES for Android 绘制线
- Jenkins自定义主题
- OpenGL ES for Android 绘制三角形
- Centos7 安装 Tomcat8 的正确姿势 并设置开机自启 实践笔记
- ASP.NET Core 使用 Google 验证码(reCAPTCHA v3)代替传统验证码
- Centos7 安装 Tomcat8 伪集群 的正确姿势 并设置开机自启 实践笔记
- 问题合集,持续更新
- ASP.NET Core Swagger接入使用IdentityServer4 的 WebApi
- 基于IdentityServer4的OIDC实现单点登录(SSO)原理简析
- OpenGL ES 变量、结构体、语句、函数、精度
- OpenGL ES for Android 绘制矩形和正方形
- OpenGL ES for Android 绘制立方体
- 服务化最佳实践
- OpenGL ES for Android 深度测试