Go 言語の暗号化および復号化関数を学習し、非対称暗号化アルゴリズムを実装します。
Go 言語の暗号化および復号化関数を学習し、非対称暗号化アルゴリズムを実装します
現代の情報化時代では、データ セキュリティが特に重要になっています。ハッカーや不法訪問者から機密データを保護するために、暗号化アルゴリズムが広く使用されています。中でも非対称暗号アルゴリズムは安全性が高いため人気があります。 Go 言語は、データのセキュリティを確保するための豊富な暗号化および復号化機能を提供する強力かつ簡潔なプログラミング言語です。
この記事では、Go 言語の暗号化関数と復号化関数を紹介し、例を通して非対称暗号化アルゴリズムを実装する方法を示します。 RSA アルゴリズムを例として使用して、公開キーと秘密キーを生成する方法と、それらを暗号化と復号化に使用する方法を示します。
まず、Go 言語と RSA ライブラリをインストールする必要があります。 Go 言語をインストールした後、次のコマンドを使用して RSA ライブラリをインストールできます。
go get -u github.com/golang/crypto
インストールが完了したら、コードの記述を開始できます。まず、公開鍵と秘密鍵のペアを生成します。秘密キーはデータの復号化に使用され、公開キーはデータの暗号化に使用されることに注意してください。以下は、公開キーと秘密キーを生成するサンプル コードです。
package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "fmt" "os" ) func main() { // 生成 RSA 密钥对 privateKey, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { fmt.Println("Failed to generate private key:", err) return } // 将私钥保存到文件中 privateKeyFile, err := os.Create("private.key") if err != nil { fmt.Println("Failed to create private key file:", err) return } defer privateKeyFile.Close() privateKeyBlock := &pem.Block{ Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(privateKey), } err = pem.Encode(privateKeyFile, privateKeyBlock) if err != nil { fmt.Println("Failed to encode private key:", err) return } // 将公钥保存到文件中 publicKey := &privateKey.PublicKey publicKeyFile, err := os.Create("public.key") if err != nil { fmt.Println("Failed to create public key file:", err) return } defer publicKeyFile.Close() publicKeyBlock := &pem.Block{ Type: "RSA PUBLIC KEY", Bytes: x509.MarshalPKCS1PublicKey(publicKey), } err = pem.Encode(publicKeyFile, publicKeyBlock) if err != nil { fmt.Println("Failed to encode public key:", err) return } fmt.Println("Keys generated successfully!") }
上記のコードを実行すると、「private.key」と「public.key」の 2 つのファイルが生成されます。これら 2 つのファイルには、それぞれ秘密キーと公開キーが保存されます。秘密キーのセキュリティを確保することは非常に重要であるため、実際のアプリケーションでは秘密キー ファイルを適切に保管する必要があります。
次に、暗号化と復号化のサンプルコードを書いていきます。以下は、生成された公開キーを使用した暗号化の例です。
package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "fmt" "io/ioutil" "os" ) func main() { // 加载公钥文件 publicKeyFile, err := os.Open("public.key") if err != nil { fmt.Println("Failed to open public key file:", err) return } defer publicKeyFile.Close() publicKeyData, err := ioutil.ReadAll(publicKeyFile) if err != nil { fmt.Println("Failed to read public key file:", err) return } publicKeyBlock, _ := pem.Decode(publicKeyData) if publicKeyBlock == nil { fmt.Println("Failed to decode public key") return } publicKey, err := x509.ParsePKCS1PublicKey(publicKeyBlock.Bytes) if err != nil { fmt.Println("Failed to parse public key:", err) return } // 加密数据 plaintext := []byte("Hello, World!") ciphertext, err := rsa.EncryptPKCS1v15(rand.Reader, publicKey, plaintext) if err != nil { fmt.Println("Failed to encrypt data:", err) return } fmt.Printf("Ciphertext: %x ", ciphertext) }
上記のコードを実行すると、暗号化された暗号文が出力されます。
最後に、復号化の例を書いてみましょう。以下は、秘密キーを使用して暗号文を復号化するサンプル コードです。
package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "fmt" "io/ioutil" "os" ) func main() { // 加载私钥文件 privateKeyFile, err := os.Open("private.key") if err != nil { fmt.Println("Failed to open private key file:", err) return } defer privateKeyFile.Close() privateKeyData, err := ioutil.ReadAll(privateKeyFile) if err != nil { fmt.Println("Failed to read private key file:", err) return } privateKeyBlock, _ := pem.Decode(privateKeyData) if privateKeyBlock == nil { fmt.Println("Failed to decode private key") return } privateKey, err := x509.ParsePKCS1PrivateKey(privateKeyBlock.Bytes) if err != nil { fmt.Println("Failed to parse private key:", err) return } // 解密数据 ciphertext := []byte{...} // 输入待解密的密文 plaintext, err := rsa.DecryptPKCS1v15(rand.Reader, privateKey, ciphertext) if err != nil { fmt.Println("Failed to decrypt data:", err) return } fmt.Printf("Plaintext: %s ", plaintext) }
上記のコードでは、ファイルから秘密キーを読み取り、その秘密キーを使用して暗号文を復号化します。最後に、元の平文データを取得します。
上記のコード例を通じて、Go 言語の暗号化関数と復号化関数を学習し、非対称暗号化アルゴリズムを正常に実装できます。データのセキュリティを保護することはすべてのプログラマーの責任ですが、Go 言語の強力な関数とライブラリ関数を使用すると、データの暗号化と復号化を簡単に実装でき、アプリケーションに高いセキュリティを追加できます。この記事が暗号化関数と復号化関数、および非対称暗号化アルゴリズムの学習に役立つことを願っています。
以上がGo 言語の暗号化および復号化関数を学習し、非対称暗号化アルゴリズムを実装します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか?ゴーランドを使用するためにGolandを使用する場合、多くの開発者はカスタム構造タグに遭遇します...

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

redisstreamを使用してGo言語でメッセージキューを実装する問題は、GO言語とRedisを使用することです...

GO言語で構造を定義する2つの方法:VARとタイプのキーワードの違い。構造を定義するとき、GO言語はしばしば2つの異なる執筆方法を見ます:最初...

ポインター構文とviperライブラリの使用における問題への取り組みGO言語でプログラミングするとき、特にポインターの構文と使用を理解することが重要です...
