Golang は、豊富な標準ライブラリと組み込み関数を備えた新しい高性能プログラミング言語です。これらには、ファイル検証やデータ検証などのためにデータのハッシュ値を生成するために使用できるハッシュ関数が含まれます。この記事では、Golangでよく使われる関数hash、crc32、md5、sha1の計算方法と応用を紹介します。
1. ハッシュ関数
Golang のハッシュ関数には、SHA-1、MD5、SHA-224、SHA-256、SHA-384、SHA-512 などのさまざまなハッシュ アルゴリズムが含まれています。 。ハッシュ アルゴリズムが異なれば、特性やアプリケーション シナリオも異なります。
1. SHA-1
SHA-1 は、任意の長さのデータを固定長のハッシュ値に変換できる安全なハッシュ アルゴリズムです。 SHA-1 ハッシュ関数の計算方法は以下のとおりです。
import "crypto/sha1" func main() { data := []byte("hello, world!") sha := sha1.Sum(data) shaStr := fmt.Sprintf("%x", sha) fmt.Println("SHA-1 of the data is:", shaStr) }
このうち sha1.Sum() 関数は SHA-1 ハッシュ値を計算でき、戻り値の型は次のバイト配列になります。長さは20。ハッシュ値は通常 16 進数の文字列として表現されるため、fmt.Sprintf() 関数を使用してバイト配列を 16 進数の文字列に変換できます。
2、MD5
MD5 は、任意の長さのデータを 128 ビットのハッシュ値に変換する一般的に使用されるハッシュ アルゴリズムです。 MD5 ハッシュ関数の計算方法は以下のとおりです。
import "crypto/md5" func main() { data := []byte("hello, world!") md := md5.Sum(data) mdStr := fmt.Sprintf("%x", md) fmt.Println("MD5 of the data is:", mdStr) }
このうち、md5.Sum() 関数は MD5 ハッシュ値を計算でき、戻り値の型は長さ 16 のバイト配列です。 。同様に、fmt.Sprintf() 関数を使用してバイト配列を 16 進文字列に変換する必要もあります。
3. SHA-256
SHA-256 は、任意の長さのデータを 256 ビットのハッシュ値に変換する安全なハッシュ アルゴリズムです。 SHA-256 ハッシュ関数の計算方法は以下のとおりです。
import "crypto/sha256" func main() { data := []byte("hello, world!") sha := sha256.Sum256(data) shaStr := fmt.Sprintf("%x", sha) fmt.Println("SHA-256 of the data is:", shaStr) }
このうち sha256.Sum256() 関数は SHA-256 ハッシュ値を計算でき、戻り値の型は次のバイト配列になります。長さは32です。同様に、fmt.Sprintf() 関数を使用してバイト配列を 16 進文字列に変換する必要もあります。
2. crc32 関数
CRC32 は、データ送信の一貫性と完全性をチェックするために使用できる、一般的に使用される巡回冗長検査アルゴリズムです。 Golang の crc32 関数は、IEEE、Castagnoli、Koopman などの複数の CRC32 アルゴリズムをサポートしています。
import "hash/crc32" func main() { data := []byte("hello, world!") crc := crc32.ChecksumIEEE(data) fmt.Println("CRC32 of the data is:", crc) }
このうち crc32.ChecksumIEEE() 関数は IEEE アルゴリズムの CRC32 値を計算でき、戻り値の型は uint32 です。
3. まとめ
この記事では、SHA-1、MD5、SHA-256、IEEE CRC32などのアルゴリズムを含む、Golangでよく使われるハッシュ関数やcrc32関数の計算方法を紹介します。これらの関数は、データ送信の整合性検証やファイル検証などに使用でき、Golang プログラミングでよく使用されるツールの 1 つです。
以上がGolang 関数のハッシュ、crc32、md5、sha1 の計算方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。