>  기사  >  백엔드 개발  >  Golang은 해시를 구현합니다.

Golang은 해시를 구현합니다.

WBOY
WBOY원래의
2023-05-16 12:35:37931검색

해시란 임의 길이의 바이너리 문자열을 고정 길이의 바이너리 문자열로 매핑하는 방법을 말합니다. 매핑 규칙은 해시 알고리즘이라고도 합니다. 해시 알고리즘은 암호화, 데이터 무결성 확인, 해시 테이블 조회와 같은 응용 프로그램에 자주 사용됩니다.

Go 언어(golang)는 다음을 포함한 다양한 해시 알고리즘의 구현을 제공하는 표준 라이브러리에 해시 패키지를 제공합니다.

  • MD5, SHA1, SHA256, SHA512 및 기타 기본 해시 알고리즘
  • CRC32, Adler32
  • Blake2b, SHA3 및 기타 최신 해싱 알고리즘

과 같은 체크섬 알고리즘

  1. 이 기사에서는 golang의 해시 패키지를 사용하여 해싱 알고리즘을 구현하는 방법을 자세히 소개합니다.

MD5

MD5(Message-Digest Algorithm 5, 메시지 다이제스트 알고리즘의 5번째 버전)는 일반적인 해시 알고리즘으로, 출력 결과는 일반적으로 32비트 16진수로 표시됩니다. golang에서는 hash 패키지의 md5.New() 메서드를 통해 md5 해시 객체를 얻고, Write 메서드를 사용하여 해시할 데이터를 해시 객체에 쓸 수 있습니다. 마지막으로 계산된 해시값은 Sum 메소드를 통해 얻을 수 있다.

다음은 샘플 코드입니다.
    package main
    
    import (
        "crypto/md5"
        "fmt"
    )
    
    func main() {
        data := []byte("example data")
        hash := md5.Sum(data)
        fmt.Printf("%x", hash)
    }
  1. 출력 결과는 다음과 같습니다.
  2. 7f808d6e58805c6bbfd1eb6b2f06991a

SHA1

SHA1(보안 해시 알고리즘의 첫 번째 버전인 보안 해시 알고리즘 1)은 비교적 안전한 해시 알고리즘이며, 출력 결과는 일반적으로 40비트 16진수로 표시되는 160비트 이진 문자열입니다. golang에서는 hash 패키지의 sha1.New() 메소드를 통해 sha1 해시 객체를 얻고, Write 메소드를 사용하여 해시할 데이터를 해시 객체에 쓸 수 있습니다. 마지막으로 계산된 해시값은 Sum 메소드를 통해 얻을 수 있다.

다음은 샘플 코드입니다.
    package main
    
    import (
        "crypto/sha1"
        "fmt"
    )
    
    func main() {
        data := []byte("example data")
        hash := sha1.Sum(data)
        fmt.Printf("%x", hash)
    }
  1. 출력 결과는 다음과 같습니다.
  2. ee5a3dd464a36f28cd1f2ff8405348d7a48112d6

SHA256

SHA256(Secure Hash Algorithm 256, Secure Hash Algorithm version 256)은 보다 안전한 해시 알고리즘입니다. 256비트 이진 문자열, 일반적으로 64비트 16진수로 표시됩니다. golang에서는 hash 패키지의 sha256.New() 메서드를 통해 sha256 해시 객체를 얻고, Write 메서드를 사용하여 해시할 데이터를 해시 객체에 쓸 수 있습니다. 마지막으로 계산된 해시값은 Sum 메소드를 통해 얻을 수 있다.

샘플 코드는 다음과 같습니다.
    package main
    
    import (
        "crypto/sha256"
        "fmt"
    )
    
    func main() {
        data := []byte("example data")
        hash := sha256.Sum256(data)
        fmt.Printf("%x", hash)
    }
  1. 출력 결과는 다음과 같습니다.
  2. 9b64dd6a22a2d1f2850835a089a58fbd572d8399f22b97d73a5e7dd2c2ae9307

SHA512

SHA512(Secure Hash Algorithm 512, Secure Hash Algorithm version 512)는 가장 안전한 해시 알고리즘 중 하나이며 해당 출력은 결과는 512비트 이진 문자열이며 일반적으로 128비트 16진수로 표시됩니다. golang에서는 hash 패키지의 sha512.New() 메서드를 통해 sha512 해시 객체를 얻고, Write 메서드를 사용하여 해시할 데이터를 해시 객체에 쓸 수 있습니다. 마지막으로 계산된 해시값은 Sum 메소드를 통해 얻을 수 있다.

다음은 샘플 코드입니다.
    package main
    
    import (
        "crypto/sha512"
        "fmt"
    )
    
    func main() {
        data := []byte("example data")
        hash := sha512.Sum512(data)
        fmt.Printf("%x", hash)
    }
  1. 출력 결과는 다음과 같습니다.
  2. 22a0c871d16be5f7dafa984087bfe0e0694fcc9a0daeff1f76fcd50445ce40ba7a45dbb13a3d0bba593bf813c368b4c14354faf7ea5718c2907f93bffb2c1253

CRC32

CRC32(Cyclic Redundancy Check 32, 순환 중복 검사 32비트)는 데이터의 무결성을 확인하는 데 사용되는 체크섬 알고리즘입니다. 출력 결과는 일반적으로 8자리 16진수로 표시되는 32비트 이진 문자열입니다. golang에서는 hash 패키지의 crc32.NewIEEE() 메소드를 통해 crc32 해시 객체를 얻을 수 있으며, Write 메소드를 사용하여 해시할 데이터를 해시 객체에 쓸 수 있습니다. 마지막으로 계산된 해시값은 Sum 메소드를 통해 얻을 수 있다.

다음은 샘플 코드입니다.
    package main
    
    import (
        "fmt"
        "hash/crc32"
    )
    
    func main() {
        data := []byte("example data")
        hash := crc32.ChecksumIEEE(data)
        fmt.Printf("%x", hash)
    }
  1. 출력 결과는 다음과 같습니다.
  2. f1ade6eb

Adler32

Adler32의 출력 결과는 일반적으로 8자리 16진수 숫자 표현을 사용하는 32비트 이진 문자열입니다. . golang에서는 hash 패키지의 adler32.New() 메소드를 통해 adler32 해시 객체를 얻을 수 있으며, Write 메소드를 사용하여 해시할 데이터를 해시 객체에 쓸 수 있습니다. 마지막으로 계산된 해시값은 Sum 메소드를 통해 얻을 수 있다.

다음은 샘플 코드입니다.
    package main
    
    import (
        "fmt"
        "hash/adler32"
    )
    
    func main() {
        data := []byte("example data")
        hash := adler32.Checksum(data)
        fmt.Printf("%x", hash)
    }
  1. 출력 결과는 다음과 같습니다.
  2. 142113ca

Blake2b

Blake2b는 최신 해싱 알고리즘입니다. 일반적인 결과는 256비트, 384비트 및 384비트입니다. 512비트. golang에서는 hash 패키지의 blake2b.New256(), blake2b.New384(), blake2b.New512() 메소드를 통해 해당 길이의 blate2b 해시 객체를 얻을 수 있으며, Write 메소드를 사용하여 해싱할 데이터를 쓸 수 있습니다. 해시 개체에 넣습니다. 마지막으로 계산된 해시값은 Sum 메소드를 통해 얻을 수 있다.

샘플 코드는 다음과 같습니다.
    package main
    
    import (
        "fmt"
        "golang.org/x/crypto/blake2b"
    )
    
    func main() {
        data := []byte("example data")
        hash256 := blake2b.Sum256(data)
        hash384 := blake2b.Sum384(data)
        hash512 := blake2b.Sum512(data)
        fmt.Printf("%x
    %x
    %x", hash256, hash384, hash512)
    }
  1. 출력은 다음과 같습니다.
  2. d852969b47e35f938f9f0ca05f2d3ca9f965b085e6c35d4ec5dbd6d2df4475d9
    75bdbe670d92c40a2e62c753bd241f3181f191a5c70fd715d8a5e341a45b607e0f0c342c1df2b4ecb103d1dee066ef2d
    8f87a4e71bde7c58c9ecc1c2c8d7bb93805d378854a496b13a5bbdaf01c138bdd01fe265ff0550c7219362918f451422c8aa738f4a0517a8d4416b7c2653c403

SHA3

SHA3(Secure Hash Algorithm 3, Secure Hash Algorithm version 3)은 출력 결과 길이를 사용자 정의할 수 있는 또 다른 최신 해싱 알고리즘입니다. 더 일반적인 것은 256비트와 512비트입니다. golang에서는 hash 패키지의 sha3.New256(), sha3.New512() 메소드를 통해 해당 길이의 sha3 해시 객체를 얻을 수 있으며, Write 메소드를 사용하여 해시할 데이터를 해시 객체에 쓸 수 있습니다. 마지막으로 계산된 해시값은 Sum 메소드를 통해 얻을 수 있다.

다음은 샘플 코드입니다. 🎜
package main

import (
    "fmt"
    "golang.org/x/crypto/sha3"
)

func main() {
    data := []byte("example data")
    hash256 := sha3.Sum256(data)
    hash512 := sha3.Sum512(data)
    fmt.Printf("%x
%x", hash256, hash512)
}
🎜출력 결과는 🎜
992f61da74e7f165b6825ba7b92ea5e119f7f4da612a7fa3024bddda7c2b45f4
266dbb94654e7c4d3493f3f88f5aff2d13601aeff862a8195aaf2caa16e7b3cb35f0b91d6f3c44f9b1dfeca28da40282caf1a2e8d5ed18a6ebf858adcce4813d
입니다.

위 내용은 Golang은 해시를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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