[go] crypto/rand 패키지의 난수 생성 유틸리티 함수

Go 언어에서 난수를 안전하게 생성해야 할 때 crypto/rand 패키지를 사용합니다. 이 패키지는 반드시 의사 난수 생성기(PRNG)의 시드로 crypto/rand 패키지의 Reader를 사용하여야 합니다.

랜덤 바이트 생성하기

crypto/rand 패키지의 Read 함수를 사용하여 원하는 길이의 무작위 바이트를 생성할 수 있습니다. 다음 코드는 crypto/rand 패키지를 사용하여 10바이트의 무작위 바이트를 생성하는 예제입니다.

package main

import (
	"crypto/rand"
	"fmt"
)

func main() {
	randomBytes := make([]byte, 10)
	_, err := rand.Read(randomBytes)
	if err != nil {
		fmt.Println("랜덤 바이트 생성 실패: ", err)
	}
	fmt.Println(randomBytes)
}

이 예제에서 crypto/rand 패키지의 Read 함수는 무작위 바이트 슬라이스에 무작위 바이트를 채웁니다. 만일 에러가 발생하면, 적절한 예외 처리를 해야 합니다.

이러한 방식으로, 안전한 무작위 바이트를 생성할 수 있습니다.

결과

crypto/rand 패키지는 특히 보안성이 필요한 애플리케이션에서 안전한 난수 생성을 위해 사용됩니다. 이를 통해 예측 불가능하고 보안적으로 안전한 난수를 생성할 수 있습니다.

이러한 난수 생성 과정은 보통 인증토큰, 비밀번호 초기화 벡터, 세션 키 등을 생성할 때에 활용됩니다.

참고: Go 공식 문서 - crypto/rand