文档
算法分析基于 RFC 3174
Request For Comments (RFC),所有关于Internet 的正式标准都是以RFC(Request for Comment )文档出版。需要注意的是,还有大量的RFC文档都不是正式的标准,出版目的都是为了提供信息。
由互联网协会(Internet Society,简称ISOC)赞助发行,会交到互联网工程工作小组(IETF)和互联网结构委员会(IAB)。文档可由网站 https://www.ietf.org/ 下载。
SHA1 描述
全称为 Secure Hash Algorithm 1(安全散列算法1)。是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。1993年 发布 SHA0,1995年发布了SHA1。其设计原理相似于MIT教授 Ronald L. Rivest 所设计的密码学散列算法 MD4 和 MD5。
SHA1 可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。
SHA比较
SHA实际上是一系列算法的统称,分别包括:SHA-1、SHA-224、SHA-256、SHA-384以及SHA-512。
类别 | 消息长度 | 分组长度 | 计算字长 | 计算步骤 | 消息摘要长度 |
---|---|---|---|---|---|
SHA-1 | 小于2^64位 | 512 | 32 | 80 | 160 |
SHA-224 | 小于2^64位 | 512 | 32 | 64 | 224 |
SHA-256 | 小于2^64位 | 512 | 32 | 64 | 256 |
SHA-384 | 小于2^128位 | 1024 | 64 | 80 | 384 |
SHA-512 | 小于2^128位 | 1024 | 64 | 80 | 512 |
golang SHA1应用
package main
import (
"crypto/sha1"
"fmt"
)
func main() {
s := "1"
h := sha1.New()
h.Write([]byte(s))
bs := h.Sum(nil)
fmt.Println(s)
fmt.Printf("%x\n", bs)
}
参考
有疑问加站长微信联系(非本文作者)