Web アプリケーションの開発に伴い、データ暗号化の重要性がますます高まっています。ユーザーが Web アプリケーションを使用する場合、悪意のある者による傍受や盗難を避けるために、ユーザーが送信するデータを暗号化してサーバーに送信する必要があります。 Golang は、強力な暗号化および復号化機能を提供する人気のあるプログラミング言語です。この記事では、Golang を使用して Web データ暗号化を実装する方法を紹介します。
1. Golang 暗号化アルゴリズムを使用する
Web データの暗号化に Golang を使用する場合、最も一般的に使用されるアルゴリズムは AES 暗号化です。アルゴリズム。 AES アルゴリズムは、暗号化と復号化に同じキーを使用する対称暗号化アルゴリズムです。 AES アルゴリズムを使用して暗号化する場合、キーの長さは 16、24、または 32 バイトである必要があります。以下は、Golang を使用して AES 暗号化を実装する方法に関するコードです。
import ( "crypto/aes" "crypto/cipher" "encoding/base64" "fmt" ) func AESEncrypt(origData []byte, key []byte) (string, error) { block, err := aes.NewCipher(key) if err != nil { return "", err } blockSize := block.BlockSize() origData = PKCS5Padding(origData, blockSize) blockMode := cipher.NewCBCEncrypter(block, key[:blockSize]) cipherText := make([]byte, len(origData)) blockMode.CryptBlocks(cipherText, origData) return base64.StdEncoding.EncodeToString(cipherText), nil } func PKCS5Padding(ciphertext []byte, blockSize int) []byte { padding := blockSize - len(ciphertext)%blockSize padtext := bytes.Repeat([]byte{byte(padding)}, padding) return append(ciphertext, padtext...) }
上記のコードでは、AES アルゴリズムと PKCS5Padding 関数を使用します。 PKCS5Padding 関数は、AES アルゴリズムを使用してブロック サイズ要件を満たすように平文をパディングするために使用されます。次に、CBCEncrypter を使用して、パディングされた平文を暗号文に暗号化します。最後に、暗号文は送信用に Base64 でエンコードされます。
RSA 暗号化アルゴリズムは、公開キーを使用してデータを暗号化し、秘密キーを使用してデータを復号化する非対称暗号化アルゴリズムです。 RSA アルゴリズムを使用して暗号化する場合、公開キーと秘密キーはペアになります。 Golang を使用して RSA 暗号化を実装する方法のコードは次のとおりです。
import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/base64" "encoding/pem" "fmt" ) func RSAEncrypt(origData []byte, publicKey []byte) (string, error) { block, _ := pem.Decode(publicKey) if block == nil { return "", fmt.Errorf("failed to decode public key") } pubInterface, err := x509.ParsePKIXPublicKey(block.Bytes) if err != nil { return "", err } pub := pubInterface.(*rsa.PublicKey) cipherText, err := rsa.EncryptPKCS1v15(rand.Reader, pub, origData) if err != nil { return "", err } return base64.StdEncoding.EncodeToString(cipherText), nil }
上記のコードでは、公開キーをパラメータとして RSAEncrypt 関数に渡します。この関数では、PEM を使用して公開キーをデコードし、それを RSA.PublicKey タイプに解析します。次に、EncryptPKCS1v15 関数を使用して平文を暗号化します。最後に、暗号文は送信用に Base64 でエンコードされます。
2. Web アプリケーションでの暗号化アルゴリズムの使用
Golang を使用して Web アプリケーションを作成する場合、Golang の net/http パッケージを使用してデータの暗号化と復号化を実装できます。 Web アプリケーションで AES および RSA アルゴリズムを使用する方法のコードは次のとおりです。
import ( "net/http" ) func handleRequest(w http.ResponseWriter, r *http.Request) { key := []byte("1234567890123456") // AES key length must be 16, 24, or 32 bytes originalData := []byte("data to encrypt") cipherText, err := AESEncrypt(originalData, key) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } w.Write([]byte(cipherText)) }
上記のコードでは、最初に An を定義します。 AESキー。次に、元のデータを暗号化し、暗号文を応答に書き込みます。
import ( "net/http" ) func handleRequest(w http.ResponseWriter, r *http.Request) { publicKey := []byte(` -----BEGIN PUBLIC KEY----- MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJl4bGZ/9XIpC6wPqYCC9d/P/wjQM6FG KmNl02Ax9zEgSU+luOKvaYKlEW6dFlEtJ93IvOnrs5uIVIDBsW0iO8CAwEAAQ== -----END PUBLIC KEY----- `) originalData := []byte("data to encrypt") cipherText, err := RSAEncrypt(originalData, publicKey) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } w.Write([]byte(cipherText)) }
上記のコードでは、公開キーをパラメーターとして RSAEncrypt 関数に渡します。 RSAEncrypt 関数は、公開キーを使用して元のデータを暗号化し、暗号文を応答に書き込みます。
3. 概要
Web データの暗号化は、ユーザー データを保護し、悪意のある仲介者によるデータの盗難を防ぐために重要です。 Golang を使用して Web アプリケーションを作成する場合、AES および RSA アルゴリズムを使用してデータ暗号化を実装できます。データが送信される前に、平文は暗号文に暗号化され、受信側で復号化されます。上記のサンプル コードは、Golang を使用してこれらの操作を実装する方法を示しています。
以上がGolang を使用して Web データ暗号化を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。