>  기사  >  백엔드 개발  >  Go 언어 문서 분석: crypto/hmac.New 함수로 HMAC 해시 계산 구현

Go 언어 문서 분석: crypto/hmac.New 함수로 HMAC 해시 계산 구현

PHPz
PHPz원래의
2023-11-04 10:02:26871검색

Go 언어 문서 분석: crypto/hmac.New 함수로 HMAC 해시 계산 구현

Go 언어 문서 분석: crypto/hmac.New 함수는 HMAC 해시 계산을 구현하며, 특정 코드 예제가 필요합니다.

HMAC(Hash-based Message Authentication Code)는 해시 함수와 키를 사용하여 메시지를 인증하는 방법입니다. 완전한 알고리즘. Go 언어의 crypto/hmac 패키지에서는 New 기능을 통해 쉽게 HMAC 인스턴스를 생성하고 해시 계산을 수행할 수 있습니다. 이 기사에서는 crypto/hmac.New 함수의 사용법을 자세히 분석하고 해당 기능과 사용법을 설명하는 특정 코드 예제를 제공합니다.

먼저 crypto/hmac.New 함수의 함수 서명을 살펴보겠습니다.

func New(h func() hash.Hash, key []byte) hash.Hash

이 함수는 두 개의 매개변수를 허용합니다. 그 중 첫 번째 One 매개변수는 지정된 해시 함수 인스턴스를 생성하는 데 사용되는 함수 유형이고, 두 번째 매개변수는 HMAC 계산의 키로 사용되는 바이트 배열입니다. 이 함수는 해시될 수 있는 hash.Hash 유형의 값을 반환합니다.

그럼 crypto/hmac.New 기능은 어떻게 사용하나요? 다음 단계에 따라 HMAC 해시 계산을 완료할 수 있습니다.

먼저 crypto/hmac 패키지와 해시 패키지를 가져와야 합니다.

import (

"crypto/hmac"
"hash"

)

그런 다음 HMAC 인스턴스를 생성하기 위한 해시 함수와 키를 선택해야 합니다. 여기서는 SHA256을 해시 함수로 선택하고 임의의 키를 생성합니다.

func createHMAC(data []byte, key []byte) []byte {

h := hmac.New(sha256.New, key)
h.Write(data)
return h.Sum(nil)

}

위 코드의 createHMAC 함수는 두 개의 매개 변수를 허용합니다. : HMAC를 계산하는 데 필요한 데이터와 키입니다. 함수 내에서 hmac.New 함수는 SHA256 HMAC 인스턴스를 생성하는 데 사용되며 전달된 키를 사용하여 초기화됩니다. 그런 다음 h.Write 메서드를 통해 HMAC 인스턴스에 데이터를 쓰고, h.Sum(nil) 메서드를 사용하여 계산된 해시 값을 얻습니다.

다음으로 createHMAC 함수를 사용하여 HMAC의 해시 값을 계산할 수 있습니다. 예를 들어 다음과 같이 호출할 수 있습니다.

func main() {

data := []byte("Hello, HMAC!")
key := []byte("MySecretKey")
result := createHMAC(data, key)
fmt.Printf("%x

", result)
}

위 코드에서는 문자열 데이터와 키를 정의합니다. 그런 다음 createHMAC 함수를 호출하여 계산합니다. HMAC 해시 값을 사용하고 fmt.Printf 함수를 사용하여 결과를 16진수 형식으로 인쇄합니다.

요약하자면, HMAC 해시 계산은 crypto/hmac.New 함수를 통해 쉽게 구현할 수 있으며 해시 함수 하나만 선택하면 됩니다. 키를 입력하고 위 단계에 따라 함수를 호출하여 계산을 완료합니다. 실제 응용 프로그램에서 HMAC 알고리즘은 데이터 무결성을 확인하고 인증 토큰 및 기타 보안 관련 기능을 생성하는 데 자주 사용됩니다. 이 기사는 crypto/hmac.New 함수의 사용을 이해하는 데 도움이 될 것입니다. Go 언어 문서를 계속 탐색하여 이 프로그래밍 언어의 다양한 기능과 특징을 더 잘 적용하고 이해하세요.

위 내용은 Go 언어 문서 분석: crypto/hmac.New 함수로 HMAC 해시 계산 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.