3.sha
最后更新于:2022-04-02 04:47:21
sha1:
~~~
package main
import (
"crypto/sha1"
"encoding/hex"
"fmt"
"io"
)
func main() {
str := "abc123"
//方法一
data := []byte(str)
has := sha1.Sum(data)
shastr1 := fmt.Sprintf("%x", has) //将[]byte转成16进制
fmt.Println(shastr1)
//方法二
w := sha1.New()
io.WriteString(w, str) //将str写入到w中
bw := w.Sum(nil) //w.Sum(nil)将w的hash转成[]byte格式
// shastr2 := fmt.Sprintf("%x", bw) //将 bw 转成字符串
shastr2 := hex.EncodeToString(bw) //将 bw 转成字符串
fmt.Println(shastr2)
}
~~~
输出结果:
~~~
6367c48dd193d56ea7b0baad25b19455e529f5ee
6367c48dd193d56ea7b0baad25b19455e529f5ee
~~~
哈希值用作表示大量数据的固定大小的唯一值。数据的少量更改会在哈希值中产生不可预知的大量更改。
SHA256 算法的哈希值大小为 256 位。
~~~
package main
import (
"crypto/sha256"
"encoding/hex"
"fmt"
"io"
)
func main() {
str := "abc123"
w := sha256.New()
io.WriteString(w, str) //将str写入到w中
bw := w.Sum(nil) //w.Sum(nil)将w的hash转成[]byte格式
// shastr2 := fmt.Sprintf("%x", bw) //将 bw 转成字符串
shastr2 := hex.EncodeToString(bw) //将 bw 转成字符串
fmt.Println(shastr2)
}
~~~
输出结果:
~~~
6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090
~~~
sha512:
~~~
package main
import (
"crypto/sha512"
"encoding/hex"
"fmt"
"io"
)
func main() {
str := "abc123"
w := sha512.New()
io.WriteString(w, str) //将str写入到w中
bw := w.Sum(nil) //w.Sum(nil)将w的hash转成[]byte格式
// shastr2 := fmt.Sprintf("%x", bw) //将 bw 转成字符串
shastr2 := hex.EncodeToString(bw) //将 bw 转成字符串
fmt.Println(shastr2)
}
~~~
输出结果:
~~~
c70b5dd9ebfb6f51d09d4132b7170c9d20750a7852f00680f65658f0310e810056e6763c34c9a00b0e940076f54495c169fc2302cceb312039271c43469507dc
~~~
';