Go 에서 SHA256 해시 계산하기

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩은 Go 에서 SHA256 해시를 계산하는 방법을 보여주는 것을 목표로 합니다. SHA256 해시는 바이너리 또는 텍스트 블롭 (blob) 에 대한 짧은 식별자를 계산하는 데 일반적으로 사용됩니다.

SHA256 해시

문자열이 주어지면, 해당 문자열의 SHA256 해시를 계산합니다.

  • 프로그램은 crypto/sha256fmt 패키지를 임포트해야 합니다.
  • 프로그램은 sha256.New() 함수를 사용하여 새로운 해시를 생성해야 합니다.
  • 프로그램은 Write 함수를 사용하여 문자열의 바이트를 해시에 써야 합니다.
  • 프로그램은 Sum 함수를 사용하여 최종 해시 결과를 바이트 슬라이스로 가져와야 합니다.
  • 프로그램은 원래 문자열과 해시 결과를 16 진수 형식으로 출력해야 합니다.
## 프로그램을 실행하면 해시를 계산하고 사람이 읽을 수 있는
## 16 진수 형식으로 출력합니다.
$ go run sha256-hashes.go
sha256 this string
1af1dfa857bf1d8814fe1af8983c18080019922e557f15a8a...

## 위와 유사한 패턴을 사용하여 다른 해시를 계산할 수 있습니다. 예를 들어,
## SHA512 해시를 계산하려면 `crypto/sha512` 를 임포트하고
## `sha512.New()` 를 사용합니다.

## 암호학적으로 안전한 해시가 필요한 경우,
## [해시 강도](https://en.wikipedia.org/wiki/Cryptographic_hash_function) 를
## 신중하게 연구해야 합니다!

전체 코드는 다음과 같습니다.

// [_SHA256 해시_](https://en.wikipedia.org/wiki/SHA-2) 는
// 바이너리 또는 텍스트 블롭 (blob) 에 대한 짧은 식별자를 계산하는 데
// 자주 사용됩니다. 예를 들어, TLS/SSL 인증서는 SHA256 을 사용하여
// 인증서의 서명을 계산합니다. 다음은 Go 에서 SHA256 해시를 계산하는 방법입니다.

package main

// Go 는 다양한 `crypto/*` 패키지에서 여러 해시 함수를 구현합니다.
import (
	"crypto/sha256"
	"fmt"
)

func main() {
	s := "sha256 this string"

	// 여기에서 새로운 해시를 시작합니다.
	h := sha256.New()

	// `Write` 는 바이트를 예상합니다. 문자열 `s` 가 있는 경우,
	// `[]byte(s)` 를 사용하여 바이트로 변환합니다.
	h.Write([]byte(s))

	// 이것은 최종 해시 결과를 바이트
	// 슬라이스로 가져옵니다. `Sum` 에 대한 인수는 기존 바이트 슬라이스에
	// 추가하는 데 사용할 수 있습니다: 일반적으로 필요하지 않습니다.
	bs := h.Sum(nil)

	fmt.Println(s)
	fmt.Printf("%x\n", bs)
}

요약

이 랩에서는 crypto/sha256 패키지를 사용하여 Go 에서 SHA256 해시를 계산하는 방법을 보여주었습니다. 요구 사항을 따르고 TODO 섹션을 완료함으로써, 프로그램은 주어진 문자열의 SHA256 해시를 계산할 수 있습니다.