ホームページ >バックエンド開発 >Golang >Golang はハッシュを要求します

Golang はハッシュを要求します

王林
王林オリジナル
2023-05-16 11:21:07909ブラウズ

ハッシュは、任意の長さのメッセージを固定長のダイジェストに圧縮するために使用される関数です。一般に、ハッシュ関数は、任意の入力を固定長の出力文字列にマッピングします。異なる入力が同じ出力にマッピングされる場合があり、これをハッシュ衝突と呼びます。ハッシュ関数は、情報セキュリティ、データ整合性チェックなどの分野で広く使用されています。この記事ではGo言語でのハッシュ関数の使い方を紹介します。

ハッシュ関数には多くの種類があり、各ハッシュ関数にはハッシュ値の長さ、安全性、速度など、独自の特性があります。 Go 言語で一般的に使用されるハッシュ関数には、MD5、SHA-1、SHA-256 などが含まれます。これらの関数は crypto.Hash インターフェイスを実装しており、メッセージ ダイジェストの生成に使用できます。

以下では、MD5、SHA-1、SHA-256 関数の使用方法をそれぞれ紹介します。

MD5

MD5 は、任意の長さのメッセージを 128 ビットのハッシュ値に圧縮する、広く使用されているハッシュ関数です。 Go 言語では、crypto/md5 パッケージの New 関数を使用して MD5 ハッシュ関数を作成できます。この関数を呼び出すとハッシュ タイプのポインターが返されます。このポインターを使用して Write メソッドを呼び出し、ハッシュ値を計算する必要があるデータを入力し、最後に Sum メソッドを呼び出して計算されたハッシュ値を取得できます。サンプル コードは次のとおりです。

package main

import (
    "crypto/md5"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := md5.New()
    hash.Write(data)
    fmt.Printf("%x
", hash.Sum(nil))
}

出力結果は次のとおりです。

5eb63bbbe01eeed093cb22bb8f5acdc3

SHA-1

SHA-1 は、MD5 アルゴリズムに基づくハッシュ関数です。メッセージは 160 ビットのハッシュ値に圧縮されます。 Go 言語では、crypto/sha1 パッケージの New 関数を使用して SHA-1 ハッシュ関数を作成できます。この関数を呼び出すとハッシュ タイプのポインターが返されます。このポインターを使用して Write メソッドを呼び出し、ハッシュ値を計算する必要があるデータを入力し、最後に Sum メソッドを呼び出して計算されたハッシュ値を取得できます。サンプル コードは次のとおりです。

package main

import (
    "crypto/sha1"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha1.New()
    hash.Write(data)
    fmt.Printf("%x
", hash.Sum(nil))
}

出力結果は次のとおりです。

2ef7bde608ce5404e97d5f042f95f89f1c232871

SHA-256

SHA-256 は、任意の長さのメッセージを圧縮するハッシュ関数です。 256ビットのハッシュ値。 Go 言語では、crypto/sha256 パッケージの新しい関数を使用して SHA-256 ハッシュ関数を作成できます。この関数を呼び出すとハッシュ タイプのポインターが返されます。このポインターを使用して Write メソッドを呼び出し、ハッシュ値を計算する必要があるデータを入力し、最後に Sum メソッドを呼び出して計算されたハッシュ値を取得できます。サンプルコードは次のとおりです。

package main

import (
    "crypto/sha256"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha256.New()
    hash.Write(data)
    fmt.Printf("%x
", hash.Sum(nil))
}

出力結果は次のとおりです。

b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

ご覧のとおり、異なるハッシュ関数によって生成されたハッシュ値の長さは異なります。アプリケーションの特定のニーズに応じて、適切なハッシュ関数を選択する必要があります。

概要: ハッシュ関数は、任意の長さのメッセージを固定長のハッシュ値に圧縮できます。 Go 言語はさまざまなハッシュ関数の実装を提供しており、実際のニーズに応じて適切なハッシュ関数を選択できます。ハッシュ関数は、情報セキュリティやデータ整合性チェックなどの分野で広く使用されています。

以上がGolang はハッシュを要求しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。