SHA1 해시(SHA1 hashes)는 바이너리나 텍스트 블롭에 대한 짧은 식별자를 계산하기 위해 자주 사용됩니다. 예를 들어, git revision control system은 버저닝된 파일과 디렉토리를 식별하기 위해 광범위하게 SHA1을 사용합니다. 여기에 Go에서 SHA1 해시를 계산하는 방법이 있습니다. |
|
package main
|
|
Go는 다양한 |
import "crypto/sha1"
import "fmt"
|
func main() {
s := "sha1 this string"
|
|
해시를 생성하는 패턴은 |
h := sha1.New()
|
|
h.Write([]byte(s))
|
다음은 최종 해시 결괏값을 바이트 슬라이스로 얻습니다. |
bs := h.Sum(nil)
|
SHA1 값은 종종 16진수로 출력되는데, 예로 git 커밋이 있습니다. 해쉬값을 16진수 문자열로 변환하기 위해선 |
fmt.Println(s)
fmt.Printf("%x\n", bs)
}
|
프로그램을 실행하면 해시를 계산하고 이를 사람이 읽을 수 있는 16진수 포맷으로 출력합니다. |
$ go run sha1-hashes.go
sha1 this string
cf23df2207d99a74fbe169e3eba035e633b65d94
|
위에서 봤던 패턴과 유사한 패턴을 사용하여 다른 해시를 계산할 수 있습니다. 예를 들면, MD5 해시를 계산하기 위해선 |
|
참고로 암호학적으로 안전한 해시가 필요하다면 해시 강도(hash strength)를 주의깊게 조사해야합니다. |
다음 예제: Base64 인코딩.